gpt4 book ai didi

c - C 中未声明的宏

转载 作者:行者123 更新时间:2023-11-30 19:04:59 25 4
gpt4 key购买 nike

这段代码运行完美,输出为 4。

#include<stdio.h>
#if X==5
#define Y 5
#else
#define Y 4
#endif
void main()
{
printf("%d",Y);
}

虽然这段代码返回一个错误,指出“X undeclared”。

#include<stdio.h>
#if X==5
#define Y 5
#else
#define Y 4
#endif
void main()
{
printf("%d",X);
}

如果未定义宏,则预处理器默认将其分配为 0。那么为什么我在第二段代码中没有得到输出“0”呢?如果 X 未声明,根据错误,未声明的宏如何成功编译,并且第一段代码中没有任何错误?请用简单的话解释一下。提前致谢。

最佳答案

因为在预处理器文本替换之后,X 不会被替换,因为它没有在任何地方定义,并且您会收到 undefined variable 错误。

未定义的宏符号对于预处理器来说值为 0,但仅限于预处理器条件表达式(即 #if#elif),而不是在 C 语句中。

关于c - C 中未声明的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787806/

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