【发布时间】:2019-05-12 03:48:39
【问题描述】:
我编写了以下代码来测试 MACRO 功能:
#define err_exit(a, b) {fprintf(stdout,"%s\n",(a)); return (b); }
int func1(int a){
if(a<50)
err_exit("less than 50", a);
if(a>50)
err_exit("greater than 50", a);
return 0;
}
int main() {
fprintf(stdout, "\npop\n%d\n",func1(30));
return 0;
}
输出是:
less than 50
pop
30
但我期待这个输出:
pop
less than 50
30
为什么文本会出现在pop 之前?在它之后调用函数func1()!
宏如何替换主代码中的指令?
【问题讨论】:
-
对
fprintf的调用取决于func1(3)的结果。您如何设想在func1完成之前开始?
标签: c function macros order-of-execution