C++ 变量必须在所有源中都是绝对全局的
我们如何使一个变量在一个(将是)二进制文件的所有.cpp文件/模块中成为全局变量,该二进制文件将由g++以一行的形式编译和链接 即使它是在main中定义的,并且在var.中有extern包含在每个.cpp中C++ 变量必须在所有源中都是绝对全局的,c++,gcc,module,linker-errors,C++,Gcc,Module,Linker Errors,我们如何使一个变量在一个(将是)二进制文件的所有.cpp文件/模块中成为全局变量,该二进制文件将由g++以一行的形式编译和链接 即使它是在main中定义的,并且在var.中有extern包含在每个.cpp中 extern int a_sample_var; 尝试了一个多星期,结果失败了 ..:未定义对a\u sample\u var的引用 有慷慨的大师帮我吗?extern int a\u sample\u var; 告诉编译器:有一个名为a\u simple\u var的int定义在其他地方
extern int a_sample_var;
尝试了一个多星期,结果失败了
..:未定义对a\u sample\u var的引用
有慷慨的大师帮我吗?extern int a\u sample\u var;
告诉编译器:有一个名为a\u simple\u var
的int
定义在其他地方(想想关键字extern
:它是external
的缩写,意思是“其他地方”)。只需在那里留下一个占位符,等待链接器找到它
如果你在每个cpp
文件中都这样做(通过包含一个头),那么每个人都在要求定义(通过提供声明),但是没有人提供定义注意这里的措辞,定义和声明是不同的
在一个cpp
文件中,您应提供a_simple_var
的定义。只需删除extern
:
int a_sample_var;//用0初始化
或
int a_sample_var=1;//用1初始化。
这两个是正确的定义。Global是个坏主意。虽然可以将其引入到使用的名称空间中,但仍然无法将其添加到头文件中并将其包含在所有源文件中。根据我的经验,人们抱怨没有显式地编写…=0
,这就是为什么我建议int a_sample_var=0代码>取而代之。但在一个更开放的环境中,两者都可以。