do..while(false)的⽤法总结⾸先要注意:
代表do⾥⾯的东西⾄少被执⾏⼀次,在这⾥仅仅执⾏⼀次。
此种⽤法有三个⽤处:
代替{}代码块,实现局部作⽤域。在某些宏定义时⾮常有⽤:
#define f(x) do {\
some_code;
do while语句怎么用some_code;
} while(0)
(while(0)后没有分号)。
这种语句在使⽤的时候⽐:
#define f(x) {\
some_code;
some_code;
}
(没有分号)
不容易产⽣谬误。
if(sss)
f(x);
esle
...
此处如果不使⽤while(0)有可能else会跟着f(x)展开后的if⾛,使⽤while就不会产⽣这种情况。
需要注意的是:
第⼀种while(0)后不要加;否则在使⽤的时候就⽤成了f(x)【没有分号】,代码风格不统⼀。
使⽤break跳出,带到使⽤goto的效果,避免使⽤goto【有的公司禁⽌使⽤goto】.
//goto case
{
if(!a) gotodone;
//do something here
if(!b) gotodone;
//do another thing here
done:
//final step goes here
}
/
/ do ... while(0)
{
do
{
if(!a) break;
//do something here
if(!b) break;
//do another thing here
}while(0);
//final step goes here
}
兼容编译器
int a;
a = 10;
int b;
b = 20;
这种代码在只⽀持c89的编译器上是编译不过去的,⽐如ADS 2.0
int a;
a = 10;
do{
int b;
b = 20;
}while(0);
这种代码在各种编译器上都能编译过去。
另外,do while(0)可以保证代码在某个地⽅出错及时退出,⽽不执⾏后⾯的代码,有goto的作⽤,⽤在⼀些初始化或者出错不能在继续进⾏的代码段中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。