【发布时间】:2018-04-04 06:55:44
【问题描述】:
我在理解 #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。为什么?
【问题讨论】:
-
我见过一些骗子,但现在找不到。
#if是一个 preprocessor 指令,它在 before 编译之前执行,并且在最终程序中不再存在。你得到f==0因为VAR什么都不是,预处理器甚至不知道a或b。 -
呃,你在和
foo()中那些没有支撑的if/else行开玩笑吧? -
这只是一个示例
标签: c if-statement c-preprocessor