the*_*tic -2 c c++ standards c-preprocessor
是C或C++中定义的以下代码的结果?
#define FOO
#define BAR defined(FOO)
#if BAR
int x = 1;
#else
int x = 2;
#endif
Run Code Online (Sandbox Code Playgroud)
defined在条件指令中使用扩展被视为未定义行为.
如果
defined由于此替换过程而生成令牌,或者defined在宏替换之前使用一元运算符与两个指定表单中的一个不匹配,则行为是未定义的.
无这些宏名称,也不标识符
defined,应的对象#define或#undef预处理指令.
如果
defined运算符是宏扩展的结果,则C标准表示行为未定义.GNU cpp将其视为真正定义的运算符并对其进行正常评估.如果您使用命令行选项'-pedantic',它将在您的代码使用此功能的任何地方发出警告,因为其他编译器可能会以不同方式处理它.
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |