当我编译这段代码时,我收到一个错误“错误LNK2005”int in“(?a @@ 3HA)已在file.obj中定义 码: main.cpp中:
#include "header.h"
int main()
{
return 0;
}
file.cpp:
#include "header.h"
void function()
{
}
header.h:
#ifndef HEADER
#define HEADER
int a;
#endif
提前致谢
答案 0 :(得分:5)
在一个文件中包含两次包含头文件的防护装置,但这里有两个不同的文件。我的建议是不要在头文件中定义任何变量。而是将它们声明为extern
并在单独的cpp文件中定义它们,其中包含头文件。这样,您将只有一个定义,但您将在使用它们的地方声明它们。
答案 1 :(得分:0)
在你的头文件中有
a
只要包含该头文件,就会有一个全局变量a
然后在目标文件中有两个版本的int a
。
开始链接。 AARGH链接器不知道如何解决它。
解决方案从头文件中删除myConnection.BeginTrans:
。如果必须,请使用extern。但最好的事情不是拥有全局