-7

我昨天问了以下问题:错误 C2059:语法错误“常量”[重复]

代码是:

enum {false,true};
typedef char bool;

我现在知道为什么会出现错误,但我的问题没有解决方案。任何想法将不胜感激。

4

2 回答 2

2

只需删除这两行。任何使用或仍将编译的代码,因为这些是 C++ 中的关键字booltruefalse

唯一的问题可能是某些恶意代码是否依赖这种bool类型能够存储其他值。然而,无论如何,这样的代码几乎肯定是错误的。

于 2013-09-05T08:58:42.887 回答
1

如果您对 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>

于 2013-09-05T08:55:48.277 回答