我昨天问了以下问题:错误 C2059:语法错误“常量”[重复]
代码是:
enum {false,true};
typedef char bool;
我现在知道为什么会出现错误,但我的问题没有解决方案。任何想法将不胜感激。
我昨天问了以下问题:错误 C2059:语法错误“常量”[重复]
代码是:
enum {false,true};
typedef char bool;
我现在知道为什么会出现错误,但我的问题没有解决方案。任何想法将不胜感激。
只需删除这两行。任何使用或仍将编译的代码,因为这些是 C++ 中的关键字bool
。true
false
唯一的问题可能是某些恶意代码是否依赖这种bool
类型能够存储其他值。然而,无论如何,这样的代码几乎肯定是错误的。
如果您对 C++ 和 C 项目使用相同的代码,则必须根据编译器有条件地删除这些声明。这可以通过这样的预处理器来完成:
#if !defined(__cplusplus) && !defined(__bool_true_false_are_defined)
enum {false,true};
typedef char bool;
#endif
使用 C++ 编译器进行编译时,__cplusplus
会定义预处理器宏,但绝不会在 C 编译器中定义它。__bool_true_false_are_defined
如果包含<stdbool.h>
还定义布尔类型和值的预处理器宏,则会定义预处理器宏。
事实上,我建议你根本不要做自己的声明,但如果你不使用 C++ 编译器进行编译,那么只需简单地包含即可<stdbool.h>
。