gpt4 book ai didi

c - 在 #if 中更改变量时出现问题

转载 作者:行者123 更新时间:2023-11-30 21:38:41 25 4
gpt4 key购买 nike

我在理解 #if 预处理器指令的工作原理时遇到一些问题。

从此代码:

int a, b;

#define VAR (a | b)

void foo(int x)
{
if(x)
a = smth;
b = smth2;
else
a = xmth;
b = xmth2;
}
int main()
{
foo(x);
#if(VAR != 0)
{
f = VAR;
}
}

我只能更改foo(),但无论xmth/smth的值是什么,我都会得到f=0。为什么?

最佳答案

预处理器指令在编译程序之前被解释。因此VAR不知道ab。请参阅C preprocessor on Wikipedia .

<小时/>

相反,您可以创建一个带有参数的宏,如下所示:

#define VAR(a,b) (a | b)

...并像这样使用它:

#if (VAR(a,b) != 0)

您必须调整您的程序,因为 ab 不属于您的 main() 函数的范围。

关于c - 在 #if 中更改变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49644634/

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