gpt4 book ai didi

对 #if 表达式感到困惑

转载 作者:行者123 更新时间:2023-11-30 18:52:02 25 4
gpt4 key购买 nike

我正在使用 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,这是我没有预料到的。我不希望它像这样工作的原因是因为我预计会出现编译错误,因为代码中的任何地方都没有定义或声明 abcxyz 标记。 所以问题是为什么这有效?

最后,如果我声明并定义 abcxyz 如下:

int abc = 123;
int xyz = 456;

应用程序打印出字符串Expression is true?这看起来显然是错误的不是吗? 为什么如果我将变量声明并定义为具有不同值的整数,我会触发 #if 而不是 #else?

谢谢。

最佳答案

我的建议是,至少在使用 C 的最初几天(几周/几个月/几年?),不要使用预处理器 # 命令,除了

  1. #include库 header ,以及
  2. 如果这些 header 需要,则添加到 #define 标志。

尝试用预处理器做任何其他事情是不值得的努力和困惑。

在本例中,使用常规 if 语句:

if ( abc == xyz ) {
printf("Expression is true.");
}
else {
printf("Expression is false.");
}

关于对 #if 表达式感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com