用的IDE是VC6.0,编译报错redefinition; different storage class

时间:2021-11-20 10:33:45
源程序有这么一段
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


引用 1 楼  的回复:
不是constant.h的两个TRUE都生效而引起冲突的。是和系统定义的TRUE冲突了。编译器一般都定义TRUE的。为什么要自己定义TRUE的呢?


不是这个问题,我同样定义了除了TRUE之外的其他几十个常量,每一条都报一个redefinition的错,把TRUE去掉也不行。

#3


偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

#4


重复包含?

#5


头文件重复包含了。加一个宏定义,防止重复编译。

#1


不是constant.h的两个TRUE都生效而引起冲突的。是和系统定义的TRUE冲突了。编译器一般都定义TRUE的。为什么要自己定义TRUE的呢?

#2


引用 1 楼  的回复:
不是constant.h的两个TRUE都生效而引起冲突的。是和系统定义的TRUE冲突了。编译器一般都定义TRUE的。为什么要自己定义TRUE的呢?


不是这个问题,我同样定义了除了TRUE之外的其他几十个常量,每一条都报一个redefinition的错,把TRUE去掉也不行。

#3


偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。

#4


重复包含?

#5


头文件重复包含了。加一个宏定义,防止重复编译。