C++ 在三个src文件中使用extern
我有三个文件: 标题.h src1.cppC++ 在三个src文件中使用extern,c++,c,extern,C++,C,Extern,我有三个文件: 标题.h src1.cpp #include "somefile.h" extern int var; int main(void) { // error: first defined here var = 10; return 0; } src2.cpp #include "somefile.h" extern int var; int foo () { // error : multiple definition of 'var' return
#include "somefile.h"
extern int var;
int main(void) { // error: first defined here
var = 10;
return 0;
}
src2.cpp
#include "somefile.h"
extern int var;
int foo () { // error : multiple definition of 'var'
return 0;
}
我不知道为什么“extern”关键字不能在这种情况下使用。如何修复这些错误?您的做法不对。将
extern
声明放在头文件中,在需要变量时包含它,并在一个源文件中定义它
就是现在,每个包含头文件的源文件都将有自己的定义,并且当您链接程序时,这些文件将相互冲突。将
int var = 0;
在其中一个cpp文件中,而不是在头文件中
然后把
extern int var;
仅在头文件中让我猜猜,somefile.h包括header.h 当您将一个变量外部化时,您希望,正如您所做的那样,该变量在一个地方是非外部的。把那个地方变成一个.c文件。如果它是一个头文件,那么它包含的每个地方都会有自己的副本,从而导致“var的多个定义” 移动 进入其中一个src文件
extern int var;
int var = 0;