constant.h文件如下:
#ifdef __cplusplus
const int TRUE = 0
....
....
#else
#define TRUE = 0
....
....
#endif
然后我主程序
A.cpp中包含的头文件有constant.h
编译时报错:
error C2370:'TRUE' redefinition; different storage class
see declaration of 'TRUE'
5 个解决方案
#1
不是constant.h的两个TRUE都生效而引起冲突的。是和系统定义的TRUE冲突了。编译器一般都定义TRUE的。为什么要自己定义TRUE的呢?
#2
不是这个问题,我同样定义了除了TRUE之外的其他几十个常量,每一条都报一个redefinition的错,把TRUE去掉也不行。
#3
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#4
重复包含?
#5
头文件重复包含了。加一个宏定义,防止重复编译。
#1
不是constant.h的两个TRUE都生效而引起冲突的。是和系统定义的TRUE冲突了。编译器一般都定义TRUE的。为什么要自己定义TRUE的呢?
#2
不是这个问题,我同样定义了除了TRUE之外的其他几十个常量,每一条都报一个redefinition的错,把TRUE去掉也不行。
#3
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
#4
重复包含?
#5
头文件重复包含了。加一个宏定义,防止重复编译。