在许多C/C++宏中,我看到宏的代码包含在看似无意义的do while
循环中.这是一些例子.
#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); } else
Run Code Online (Sandbox Code Playgroud)
我看不出它do while
在做什么.为什么不在没有它的情况下写这个?
#define FOO(X) f(X); g(X)
Run Code Online (Sandbox Code Playgroud) 我正在看一些个人的代码,并注意到他的功能似乎有一个模式:
<return-type> function(<params>)
{
<initialization>
do
{
<main code for function>
}
while(false);
<tidy-up & return>
}
Run Code Online (Sandbox Code Playgroud)
它不错,更奇特(实际代码相当简洁且不足为奇).这不是我以前见过的东西,我想知道是否有人能想到它背后的任何逻辑 - 也许是用不同语言的背景?