相信大家在写C语言头文件的时候都遇到过以下的错误(如果你没有遇到过,说明写的代码量还不够多哦): Error 6 error LNK2005: _structureTmp already defined in main.obj structure.obj pageReplace Error 7 fatal error LNK1169: one or more multiply defined symbols 问题的大概意思就是你对某些变量进行了重复的定义,出现这种错误的原因是你在头文件中定义了某个函数或是定义了某个变量,然后又在多个源文件中包含了这个头文件,结果系统在链接的时候就会报这种错误,如下面的代码 structure.h文件内容如下: int i = 0; int k; int test(); int test1(){ printf("test1"); }
structure.c文件如下: #include <stdio.h> #include "structure.h" int test(){ printf("test"); }
main.c文件如下 #include <stdio.h> #include "structure.h" int main(){
} 编译链接的时候会出现以下的错误: Error 1 error LNK2005: _test1 already defined in main.obj structure.obj headTest Error 2 error LNK2005: _i already defined in main.obj structure.obj headTest Error 3 fatal error LNK1169: one or more multiply defined symbols found C:\Users\shangxuan\vc2008\headTest\Debug\headTest.exe 1 headTest 网上像这种问题说了很多解决办法,大部分都是说在头文件中加上一个标识,使得头文件在一个工程中只被引用一次,如将头文件改为: #ifndef _INC_STRUCTURE #define _INC_STRUCTURE
int i = 0; int k; int test(); int test1(){ printf("test1"); }