【发布时间】:2013-06-25 07:44:42
【问题描述】:
如何评估这些宏?
# define i 20
void fun();
int main(){
printf("%d",i);
fun();
printf("%d",i);
return 0;
}
void fun(){
#undef i
#define i 30
}
输出为 2020 年,但
# define i 20
void fun(){
#undef i
#define i 30
}
int main(){
printf("%d",i);
fun();
printf("%d",i);
return 0;
}
输出为 3030。 请解释。谢谢。
【问题讨论】:
-
大多数编译器都有一个开关,可以让你看到预处理器的输出(宏扩展和编译之间的步骤),我建议你尝试一下
-
基本上:C 和 C 预处理器是完全不相关的语言。
标签: c c-preprocessor