我有以下两个文件:
- foo.h
- 酒吧.cpp
在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 来访问它。
关于c++ - VS2010 带有 extern 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718556/