【发布时间】:2010-06-11 14:48:55
【问题描述】:
我比较了 gcc 汇编器的输出
do {
// some code
} while (0);
与
do {
// some code
break;
} while (1);
输出是相等的,有或没有优化但是..
总是这样?
没有实验可以证明理论,它们只能证明它们是错误的
【问题讨论】:
-
你为什么要把代码放到一个不循环的while循环中?
-
逻辑可能是在某些情况下会调用“继续”,再次循环。
-
它是使用 goto 的替代品:break on exit-conditions。重构时,使用额外的函数并在需要时返回是值得的。
-
那么,如果在循环中调用 continue ,行为会有所不同。 (@Markus,@jmucchiello)
-
do { } while (0)是编写宏的常用习语。如果使用不当,它会产生比替代方案更多的编译错误......至于while (1)和break......我不知道为什么会有用。
标签: c++ c while-loop break do-while