do…while(0)的巧妙用法

23 5 月

我们在需要对于某些条件进行判断的时候,长长会写成如下形式:

if (a<b)
if (c<d)
if (e<f)
...

当判断条件非常多的时候,就显得非常的不爽了,括号之间的管理,前后的判断等等,修改起来也非常不方便,这时候我们可以使用do..while(0);
这里的while(0)保证了不会进行下次循环,那么,这和没有写这个用法有啥区别?看看下面的代码就知道了。

do{
if (a >= b) break;
...
if (c >= d) break;
...
if (e >= f) break;
...
}while(0);

可以看到,这段代码和上面那段实现功能是一样的,但是,明显的更加有条理,如果需要更改也非常方便了。

PS:当然,do…while(0)在C语言的宏中也用得比较多,特别是,当把宏伪装成函数的时候,经常这么使用,在glib的代码中就大量用了do…while(0)。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注