c ++包括警卫不起作用,错误

-3 c++ header include

当我编译这段代码时,我收到一个错误"错误LNK2005"int一个"(?a @@ 3HA)已在file.obj代码中定义:main.cpp:

#include "header.h"
int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

file.cpp:

#include "header.h"
void function()
{

}
Run Code Online (Sandbox Code Playgroud)

header.h:

#ifndef HEADER
#define HEADER
int a;
#endif
Run Code Online (Sandbox Code Playgroud)

提前致谢

Kys*_*lox 5

在单个文件中包含两次包含头文件的防护装置,但这里有两个不同的文件.我的建议是不要在头文件中定义任何变量.而是extern将它们声明为并在单独的cpp文件中定义它们,其中包含头文件.这样,您将只有一个定义,但您将在使用它们的地方声明它们.