需要解决方案:错误C2059:语法错误'常数'

时间:2013-09-05 08:51:16

标签: c++

我昨天问过以下问题:Error C2059: syntax error 'constant' [duplicate]

代码是:

enum {false,true};
typedef char bool;

我现在知道为什么我会收到错误但我无法解决问题。 任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

只需删除这两行。使用booltruefalse的任何代码仍会编译,因为这些是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>