我有这样的代码C
enum {
MYVAR = 1
};
#ifdef MYVAR
#define VAR 1
#else
#define VAR 2
#endif
printf("VAR = %d", VAR);
在这种情况下,它将打印“VAR = 2”。
有什么办法让预处理器看到定义enum
?
不,这是不可能的。#ifdef
and #if
是预处理器的一部分,它在编译器“理解”的部分之前完成其运行enum
s.
#ifdef
仅适用于预处理器常量(即用#define
,或者在命令行上传递给编译器,例如,使用-DMYVAR=123
选项)。
#if
使用整数和字符常量以及预处理器常量。所有不是预处理器常量的标识符都被视为未定义,并在评估时被解释为零#if
状况。这包括enum
常数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)