我在 C
中有这样的代码enum {
MYVAR = 1
};
#ifdef MYVAR
#define VAR 1
#else
#define VAR 2
#endif
printf("VAR = %d", VAR);
在这种情况下,它将打印“VAR = 2”。
有没有办法让预处理器看到enum
中的定义?
答案 0 :(得分:4)
不,这是不可能的。 #ifdef
和#if
是预处理器的一部分,它在编译器“理解”enum
之前完成其运行。
#ifdef
仅适用于预处理器常量(即使用#define
定义的内容,或者在命令行上传递给编译器,例如,使用-DMYVAR=123
选项)。
#if
适用于整数和字符常量以及预处理器常量。所有不是预处理程序常量的标识符都被视为未定义,并在评估#if
条件时被解释为它们为零。这包括enum
常量。