枚举中未出现的枚举常量

时间:2014-01-12 11:03:06

标签: c enums c-preprocessor

我在 C

中有这样的代码
enum {
     MYVAR = 1
};

#ifdef MYVAR
#define VAR 1
#else
#define VAR 2
#endif

printf("VAR = %d", VAR);

在这种情况下,它将打印“VAR = 2”。

有没有办法让预处理器看到enum中的定义?

1 个答案:

答案 0 :(得分:4)

不,这是不可能的。 #ifdef#if是预处理器的一部分,它在编译器“理解”enum之前完成其运行。

#ifdef仅适用于预处理器常量(即使用#define定义的内容,或者在命令行上传递给编译器,例如,使用-DMYVAR=123选项)。

#if适用于整数和字符常量以及预处理器常量。所有不是预处理程序常量的标识符都被视为未定义,并在评估#if条件时被解释为它们为零。这包括enum常量。