mfcheer

do{}while(false)

今天遇到了一段代码,类似下面

do {
	...
} while(false)

开始很疑惑,为什么这样写,后来上网搜了一下才恍然大悟。这种语法是为了解决代码嵌套、实现goto的用途

下面是同样功能的三段代码

1、代码嵌套 <!--more-->

if( A==true ) {
    if(B == true) {
    	if(C == true) {
    		if(D == true){
    			//doSomething
    		}
    	}
    }
}

这样箭头形代码很丑,且可读性差

2、goto代码

if( A==false )  
    goto tag;  
if( B==false )  
    goto tag;  
if( C==false )  
    goto tag;  
if( D==false )  
    goto tag; 
//doSomething
tag: 

3、do{}while(false)

这样的结构能够创造可读性良好的代码,又可以避免goto可能产生的问题

do  
{  
    if( A==false )  
        break;  
    if( B==false )  
        break;  
    if( C==false )  
        break;  
    if( D==false )  
        break; 
    //doSomething
}while(false); 
← 全部文章

留言