我们如何在一个(将成为)单个二进制文件的所有 .cpp 文件/模块中创建一个全局变量,该二进制文件将由 g++ 在一行中编译和链接?
即使它已经在 main 中定义并且在 var 中有 extern。包含在每个 .cpp 中
extern int a_sample_var;
尝试了一个多星期才失败,
.....: undefined reference to
a_sample_var
.....
有没有慷慨的大师帮助我?
最佳答案
extern int a_sample_var;
告诉编译器:在别处定义了一个名为 a_simple_var
的 int
(想想关键字 extern
:它是 的缩写external
,意思是“其他地方”)。只需在那里留下一个占位符,等待链接器找到它!
好吧,如果您在每个 cpp
文件中都这样做(通过包含 header ),那么每个人都在急切地想要定义(通过提供声明),但没有人提供定义。 注意这里的措辞,定义和声明是不同的东西。
在一个 cpp
文件中,您应该提供 a_simple_var
的定义。只需简单地删除 extern
:
int a_sample_var; // Initialize with 0
或
int a_sample_var = 1; // Initialize with 1.
这两个是正确的定义。
关于c++ - 变量在所有来源中必须是绝对全局的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58388465/