在两个 .cpp 文件之间定义全局变量
Posted
技术标签:
【中文标题】在两个 .cpp 文件之间定义全局变量【英文标题】:Defining Global Variables Between Two .cpp Files 【发布时间】:2013-08-07 21:08:06 【问题描述】:如何在 A.cpp 和 B.cpp 之间共享/全局化一个 bool 变量,其中它们都不包含其他的 .h 文件? 他们有其他联合头文件,但彼此没有。我可以在这些共享标头中定义全局变量吗?
谢谢
【问题讨论】:
写问题前请先搜索。如果您在本网站搜索您的标题,您会更容易找到答案。 这暗示了一个糟糕的设计。如果这两个文件如此无关,为什么它们共享一个bool
?
【参考方案1】:
我可以在这些共享标头中定义全局变量吗?
没有。
在A.cpp(或)B.cpp中写入,
int gVariable = 10;
请记住只在一个源文件中写入上述定义,否则如果您在两个源文件中都写入,链接器会报错。
并且在A.cpp的通用头中,B.cpp写入,
extern int gVariable;
【讨论】:
+1,但尽管您在技术上对“我可以定义...?”说“不”是正确的,但我不确定 OP 是否知道“定义”和“宣布”。答案是“是的,您可以在共享标头中声明变量,然后在其中一个源文件中定义它。” 你是对的。我更多地关注问题中的 define 词。头文件中的extern
是声明,虽然可以在各种源文件中多次声明。
谢谢你们。只是一个简短的问题......我可以输入“int gVariable = 10;”吗?在公共头对应的 .cpp 文件中?
@user2517676 不,这将导致多个符号。您必须在头文件中进行外部声明,而定义仅在一个源文件/翻译单元中给出。
我的意思是在 C.h 中声明 gVariable,在 C.cpp 中定义它,而 A.cpp 和 B.cpp 都包含 C.h。【参考方案2】:
文件 1:
int x = 50;
文件 2:
extern int x;
【讨论】:
以上是关于在两个 .cpp 文件之间定义全局变量的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中删除其类的实例后,分配给 cpp 中定义的全局静态变量的内存是不是被释放?