我有以下两个文件:
在
foo.h
中,我清除了一个变量extern
。现在,我想在
bar.cpp
中使用相同的变量(包括foo.h
之后)。在VS2008和VS2010下,我收到
unresolved external symbol
错误,而在具有gcc的Ubuntu下,编译成功。(即,我正在尝试编译以下源代码:http://www.fromdual.com/using-mysql-user-defined-functions-udf; foo.h是指srv0srv.h,而bar.cpp是指源代码。所有包含的内容都已存在,编译成功,链接失败)
可能是什么问题?
最佳答案
extern关键字向编译器指示该变量之后的变量已在其他地方声明。它实际上并没有为变量分配空间。如果要创建一个全局变量,可以通过包含一个头文件来使用(顺便说一句,通常这是个坏主意),可以按以下方式进行操作。
在foo.h中:
extern int myVar;
在foo.cpp中:
int myVar;
myVar现在位于foo.cpp中,但是foo.h中的extern语句允许其他文件(例如bar.cpp)中的代码通过包含foo.h来访问它。