gpt4 book ai didi

c - C中的MACRO执行步骤

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:16 25 4
gpt4 key购买 nike

我写了下面的代码来测试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() 在它之后被调用!

宏如何替换主代码中的指令?

最佳答案

首先,func1(30) 被调用,因此它可以被执行,并且应该产生结果。 main() 中的 fprint() 需要该结果,以便它可以打印它的内容。

func1(30) 被执行时,宏的 fprintf() 被执行,并且“小于 50”被打印出来。现在,func1(30) 的结果可用。

main()

fprint() 现在可以继续打印了(因为它拥有所需的一切(即 func1(30)< 的结果)/)。

它将按预期打印“pop”,然后是“30”。

关于c - C中的MACRO执行步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53719316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com