我昨天问过以下问题:Error C2059: syntax error 'constant' [duplicate]
代码是:
enum {false,true};
typedef char bool;
我现在知道为什么我会收到错误但我无法解决问题。 任何想法都会受到赞赏。
答案 0 :(得分:2)
只需删除这两行。使用bool
,true
或false
的任何代码仍会编译,因为这些是C ++中的关键字。
唯一的问题可能是,如果某些恶意代码依赖于此bool
类型能够存储其他值。但是,无论如何,这样的代码几乎肯定是错误的。
答案 1 :(得分: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>
。