<分区>
最近,我看到越来越多的代码片段使用以下模板:
do {
... some code ...
} while (false);
为什么要这样做?如果我没记错的话,代码将只运行一次,因此似乎不需要循环。
我主要接触这种风格是在 Windows 驱动程序和一些 API 的低级操作中。
标签 c
<分区>
最近,我看到越来越多的代码片段使用以下模板:
do {
... some code ...
} while (false);
为什么要这样做?如果我没记错的话,代码将只运行一次,因此似乎不需要循环。
我主要接触这种风格是在 Windows 驱动程序和一些 API 的低级操作中。
最佳答案
它有时用于实现“结构化 goto”。在这样的 do-while
区域中,break
和 continue
语句将把控制权传递到区域的末尾,并继续执行“周期”。
评论中已经提到的另一个用途是在宏中用作复合语句信封。 do-while
的独特之处在于它需要一个 ;
最后。这允许它作为复合语句信封工作,将“使用”以下 ;
。该功能允许编写类似函数的宏,允许调用者安全地放置 ;
在它们之后(参见此处:What does "do { ... } while (0)" do exactly in kernel code?)
关于c - C 中 do-while-false 的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536017/