首先,当你看到下面这段代码,你是不是觉得没有什么意义。
do
{
//do something
...
}while(0);
实际上,它是很有用的,你可以使用它来很优雅的break out
do{
if(condition){
//do Something
break;
}
//do Something
...
}while(0);
有时候,我们会经常看到这样的宏,如
#define FOO(x) a(x);b(x)
类似地,这样的宏可以用来替换多条语句。但是当我们这样使用这种宏的时候
if(condition)
FOO(x);
else
bar(x);
展开之后就是
if(condition)
a(x);b(x);
else
bar(x);
这样用的话就会出错,但是如果在宏中使用伪循环,就可以使得多条语句宏的完美的工作
#define FOO(x) do{ a(x);b(x);}while(0)
if(condition)
FOO(x);
else
bar(x);
这样展开之后就是
if(condition)
do{ a(x);b(x);}while(0);
else
bar(x);