C++ 在三个src文件中使用extern

C++ 在三个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

我有三个文件: 标题.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 0;
}

我不知道为什么“extern”关键字不能在这种情况下使用。如何修复这些错误?

您的做法不对。将
extern
声明放在头文件中,在需要变量时包含它,并在一个源文件中定义它


就是现在,每个包含头文件的源文件都将有自己的定义,并且当您链接程序时,这些文件将相互冲突。

int var = 0;
在其中一个cpp文件中,而不是在头文件中

然后把

extern int var;

仅在头文件中

让我猜猜,somefile.h包括header.h

当您将一个变量外部化时,您希望,正如您所做的那样,该变量在一个地方是非外部的。把那个地方变成一个.c文件。如果它是一个头文件,那么它包含的每个地方都会有自己的副本,从而导致“var的多个定义”

移动

进入其中一个src文件

extern int var;
int var = 0;