#define a 10
void foo();
main(){
printf("%d..",a);
foo();
printf("%d",a);
}
void foo(){
#undef a
#define a 50
}
输出:10..10..
#define a 10
void foo()
{
#undef a
#define a 50
}
void main(){
printf("%d..",a);
foo();
printf("%d",a);
}
输出:50..50..
对于#define和#undef的宏定义,是在预编译阶段就进行处理的。
#define a 10 编译器并不考虑函数执行的过程,仅仅是在#define开始到文件结束或#undef内都是有效的。
而#undef a #define a 50,作用域是接下来的代码

5070

被折叠的 条评论
为什么被折叠?



