我正在使用Visual Studio 2015学习C.如果我创建一个全新的项目并执行除以下代码之外的任何内容:
#include <stdio.h>
int main()
{
#if abc == xyz
printf("Expression is true.");
#else
printf("Expression is false.");
#endif
}
应用程序打印出字符串Expression is true
,这是我没想到的。我不期望这样工作的原因是因为我期待编译错误,因为abc
和xyz
标记未在代码中的任何位置定义或声明。 所以问题是为什么这有效?
最后,如果我声明并定义abc
和xyz
,如下所示:
int abc = 123;
int xyz = 456;
应用程序打印出字符串Expression is true
?这看起来显然错了不是吗? 为什么如果我将变量声明并定义为具有不同值的整数,我会触发#if而不是#else?
谢谢。
答案 0 :(得分:2)
我的建议是,至少在使用C的前几天(几周/几个月/几年?)中,不要使用预处理器#
命令,除了
#include
库标题,#define
标记。尝试使用预处理器执行任何其他操作并不值得付出努力和困惑。
在这种情况下,请使用常规if语句:
if ( abc == xyz ) {
printf("Expression is true.");
}
else {
printf("Expression is false.");
}