我有以下的代码:
现在,我明白代码有问题,因为枚举值对预处理器来说是未知的。但我不明白为什么没有生成错误... A和B应该在预处理时未定义,预处理器为什么不报错呢?
#include <stdio.h>
enum {A, B};
#define C A
int main() {
#if C == B
printf("%d==%d\n", C, B);
#else
printf("%d!=%d\n", C, B);
#endif
}
令人惊讶的是,它给出了以下输出:
0==1
现在,我明白代码有问题,因为枚举值对预处理器来说是未知的。但我不明白为什么没有生成错误... A和B应该在预处理时未定义,预处理器为什么不报错呢?