在包含windows h(C)时期望一个标识符

时间:2014-12-11 17:48:35

标签: c enums typedef

当包含windows.h库时,我突然得到了这个奇怪的错误

注意:当我没有使用windows.h时,该程序工作正常。这是代码:

typedeferror

只有真假的枚举没有编译..为什么会这样? 非常感谢你们。

2 个答案:

答案 0 :(得分:4)

主要是因为TRUEFALSE已经在"windows.h"中定义为宏(或包含在其中)。

所以某处有,例如,

#define TRUE (1)

该代码会在enum声明中被替换,从而引发语法错误。

答案 1 :(得分:0)

TRUE和FALSE通常#defined为-1和0(或者可能是1和0)。因此,当编译器的第一次传递执行替换时,将给出编译器的下一次传递:

typedef enum{ -1, 0 }bools;

这显然不是有效的语法。