C语言预处理命令详解(七)
定义变量出现的问题(一般不定义在#ifndef中)。
?
1 #ifndef PRECMPL
2 ? ? #define PRECMPL
3 ? ? int var;
4 #endif
? ? ?其中有个变量定义,在VC中链接时会出现变量var重复定义的错误,而在C中成功编译。
?
? ? ?(1) 当第一个使用这个头文件的.cpp文件生成.obj时,var在里面定义;当另一个使用该头文件的.cpp文件再次(单独)生成.obj时,var又被定义;然后两个obj被第三个包含该头文件.cpp连接在一起,会出现重复定义。
?
?
?
? ? ?解决方法:
?
? ? ?(1) 把源程序文件扩展名改成.c。
?
? ? ?(2) .h中只声明 extern int var;,在.cpp中定义(推荐)
?
复制代码
1 //
2 #ifndef ?__X_H
3 ? ? #define ?__X_H
4 ? ? extern int var;
5 #endif
6
7 int var = 0;
复制代码
? ? ?综上,变量一般不要定义在.h文件中。
?
?
?
?