首先,我知道这不是“正确的”。但是,我喜欢测试一下,我遇到了这个问题,如果我在头文件中创建一个全局变量并在main.cpp文件中声明它是extern,我可以使用它(请注意,我没有包含该类这个例子的标题)。但是,如果我实际上尝试做同样的事情,唯一的区别是包括类头,我得到一个错误。
(错误:ld返回1退出状态)。
我想知道为什么会这样?
所要求的代码:
Main.cpp的:
#include <iostream>
#include "albino.h"
using namespace std;
extern int iVar;
int main()
{
cout << iVar << endl;
}
albino.h:
#ifndef ALBINO_H
#define ALBINO_H
int iVar = 10;
class albino
{
public:
albino();
};
#endif // ALBINO_H
albino.cpp没有任何东西。
错误:||错误:ld返回1退出状态|
答案 0 :(得分:2)
我认为你这样做是错误的。
您只能定义全局变量 ;但是你可以多次声明
这意味着int i = 0;
应该只存在一次,所以_not不在标题中,而是在一个cpp文件中(对于编译器来说不重要的是哪一个,仅用于试图找到它的人;);并且extern int i;
可以在标题中,以便在任何地方重复。
另请参阅How do I use extern to share variables between source files?