#if #endif是否像范围一样?

时间:2014-12-30 12:16:08

标签: c scope c-preprocessor preprocessor-directive

正如标题提示的那样,我的问题是预处理器指令#if#endif是否像范围一样?考虑一下这个例子:

#define foo 1
#define bar 1

#if foo
#undef bar
#endif //foo

// Is 'bar' defined or undefined here?

1 个答案:

答案 0 :(得分:0)

现在用你的例子测试它,你会看到它:

#include <stdio.h>

#define foo 1
#define bar 1

#if foo
#undef bar
#endif //foo

int main() {

    printf("%d", bar);

    return 0;  
}

我的编译器输出:

[Error] 'bar' undeclared (first use in this function) 

所以你可以看到它未被宣布