【发布时间】:2015-10-01 15:25:13
【问题描述】:
我预计以下程序的输出为 10 20,但它是 10 10。
#include <stdio.h>
#define i 10
int main()
{
printf("%d\t",i);
fun();
printf("%d",i);
return 0;
}
fun(){
#undef i
#define i 20
}
如果我假设如果函数调用 fun() 返回到 main() 那么原始的 i 值会被打印出来,然后通过查看下面程序的输出我错了,
#include <stdio.h>
#define i 10
fun(){
#undef i
#define i 20
}
int main()
{
printf("%d\t",i);
fun();
printf("%d",i);
return 0;
}
预期输出:10 20 但输出为:20 20
谁能解释一下我的行为?
【问题讨论】:
-
线索在处理宏的组件的名称中:pre-处理器:宏在编译期间被扩展,而不是在运行时
标签: c function macros c-preprocessor