以下代码的结果是用C或C ++定义的吗?
context.DbQuery<..>(...)
答案 0 :(得分:5)
在条件指令中使用defined
作为扩展被视为未定义行为。
如果因此替换而生成令牌
defined
进程或使用defined
一元运算符与其中一个匹配 在宏替换之前的两个指定表单,行为是 未定义。强>
这些宏名称或标识符
defined
,都不是#define
或#undef
预处理指令的主题。
如果
defined
运算符是宏扩展的结果,则显示 C标准表示行为未定义。 GNU cpp将其视为一个 真正定义的运算符并正常评估它。它会警告 如果使用命令行,则代码使用此功能的任何位置 选项'-pedantic',因为其他编译器可能会以不同的方式处理它。