C++的一个项目文件,在一个头文件中用extern声明了一个对象,另一个文件中直接引用却提示是未定义的引用

在图1的文件中定义了extern LogBuffer g_LogBuffer;然后在图2的文件里引用了g_LogBuffer这个对象,但是编译一直通不过,提示是未定义的应用,可是我在图2 的文件里也加入的图一的头文件,然后文件都是放在同一目录下的,这是为什么呀?

在1里定义不用写extern
在2里引用要 用extern声明吧!
c语言是这样,c++应该也是
你搞反了追问

我后来把1,2文件一起编译就没提示这个问题了,但是只编译2就会提示未定义的引用,我也尝试了1里不写extern声明,在2里引用时进行extern声明,但只编译文件2时,仍然会提示g_LogBuffer是未定义的引用,这是为什么呀

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-05-17
很明显第一张图是头文件的代码
在头文件中只是声明了文件类型为LogBufer的外部变量g_LogBuffe。在第二图.C文件并没有定义这个变量。所以会报错。
如:extern int a;//声明全局变量a
int a;//这样才是定义变量
extern int a=0//定义一个全局变量a并赋值
int a=0;//定义一个变量a并赋值
相似回答