在C中使用do-while-false的情况?

Ref*_*ion 1 c

最近,我看到越来越多的代码片段使用以下模板:

do {
    ... some code ...
} while (false);
Run Code Online (Sandbox Code Playgroud)

为什么要这样做?如果我没有弄错,代码将只运行一次,因此似乎不需要循环.

我对这种风格的主要遇到的是Windows驱动程序,以及某些API中的低级操作.

AnT*_*AnT 8

它有时用于实现"结构化goto".在这样的do-while区域breakcontinue语句内部将控制传递到区域的末尾并继续执行遵循这种"循环"的代码.

评论中已经提到的另一个用途是作为宏内的复合语句包络.它的独特之do-while处在于它;最终需要一个.这使它可以作为复合语句包络,"消耗"以下内容;.该功能允许用户编写类似函数的宏,允许调用者安全地放置;它们(参见这里:"do {...} while(0)"在内核代码中做了什么?)


归档时间:

查看次数:

321 次

最近记录:

11 年,5 月 前