【发布时间】:2021-11-25 12:59:29
【问题描述】:
我没有同时定义符号 SYMBOL1 和 SYMBOL2,当我看到以下代码中调用了 printf 时,我感到很惊讶:
#include <stdio.h>
int main()
{
#if (SYMBOL1==SYMBOL2)
printf("Hello World");
#endif
return 0;
}
你能解释一下为什么吗?有没有参考标准?
【问题讨论】:
-
“猫头鹰不是他们看起来的样子”
-
它本质上等同于
#if (0 == 0),这是真的。 -
这肯定是重复的。我们是否有任何规范的“
#if是如何工作的?”发帖? -
@Lundin 也许你可以用this 欺骗,但它在技术上被标记为 [c++](尽管公认的答案同时引用了 C 和 C++ 标准)。
标签: c c-preprocessor