gpt4 book ai didi

c++ - C 多行宏问题 : why not use if(1){. ..} 而不是多行宏定义中的 do{...}while(0)

转载 作者:太空狗 更新时间:2023-10-29 23:28:20 24 4
gpt4 key购买 nike

我想在循环中调用多行宏来中断/继续它。

如果我在多行宏定义中使用“do{...}while(0)”,break/continue 仅对“do {...}while(0)”有效,而不影响调用的循环这个宏。所以我考虑在多宏定义中使用“if(1){...}”。

#define EXIT_CIRCULATION() \
if(1){ \
break; \
}

void func(){
while(1){
...
EXIT_CIRCULATION();
...
}
}

但我怀疑在宏定义中使用“if(1){...}”是否是一个好方法,因为我在互联网上找不到任何示例。

谢谢!

最佳答案

如果你编写类似的代码

 if (somecondition)
EXIT_CIRCULATION();
else
break;

那么宏的扩展将不会像您直观预期的那样运行。 else 将应用于您的 if (1),并且永远不会发生。

关于c++ - C 多行宏问题 : why not use if(1){. ..} 而不是多行宏定义中的 do{...}while(0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13559755/

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