当包含windows.h库时,我突然得到了这个奇怪的错误
注意:当我没有使用windows.h时,该程序工作正常。这是代码:
只有真假的枚举没有编译..为什么会这样? 非常感谢你们。
答案 0 :(得分:4)
主要是因为TRUE
和FALSE
已经在"windows.h"
中定义为宏(或包含在其中)。
所以某处有,例如,
#define TRUE (1)
该代码会在enum
声明中被替换,从而引发语法错误。
答案 1 :(得分:0)
TRUE和FALSE通常#defined为-1和0(或者可能是1和0)。因此,当编译器的第一次传递执行替换时,将给出编译器的下一次传递:
typedef enum{ -1, 0 }bools;
这显然不是有效的语法。