我是靠谱客的博主 拼搏夕阳,最近开发中收集的这篇文章主要介绍解决代码逻辑嵌套过多的技巧 do{} while(0);,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1,解决逻辑嵌套过多,代替goto语句

if( A 文件存在 ) 


        执行 A 文件的相关操作; 
        if( B 文件不存在|| 用户允许覆盖原有B文件) 
        { 
                复制A文件为B文件; 
                if(复制文件成功) 
                { 
                         打开B文件; 
                        if(打开文件成功) 
                        { 
                                写入文件; 
                                 if(写入成功) 
                                 { 
                                        关闭B文件; 
                                        if(关闭成成功) 
                                        { 
                                                执行其它必须在一切成功后进行的操作。 
                                                ……
                                        } 
                                 }
                         }
                  } 
         } 


改为:


do 

if(A 文件不存在) 

break; 

执行 A 文件的相关操作; 
if(B文件存在 && 用户不允许覆盖) 
break; 
复制A文件为B文件; 
if(复制不成功) 
break; 
打开B文件; 
if(打开B文件不成功) 
break; 
写入文件; 
if(写入文件不成功) 
break; 
关闭B文件; 
if(关闭不成功) 
break; 
执行其它必须在一切成功后进行的操作。 
  ……

while(false); 

2,解决将多个命令写在一个宏中以及宏尾部的分号问题

这个语法?被称之为防御式编程,

最大的优点有两个,

一个是可以是现在C++的宏定义中,

同时解决将多个命令写在一个宏中以及宏尾部的分号问题。

宏定义中的do...while(0)


  如果你是C++程序员,我有理由相信你用过,或者接触过,至少听说过MFC, 在MFC的afx.h文件里面, 你会发现很多宏定义都是用了do...while(0)或

do...while(false), 比如说:


#define AFXASSUME(cond)       do { bool __afx_condVal=!!(cond); ASSERT(__afx_condVal); __analysis_assume(__afx_condVal); } while(0) 


3:就是我们可以用它来代替多个if内的数个重复命令语句:

比如说这样的代码:

[cpp]  view plain copy
  1. if(occurFirstException())  
  2. {  
  3.     handleExceptionOnFirstStep();  
  4.     handleExceptionOnSecondStep();    
  5. }  
  6.   
  7. else if(occurSecondException())  
  8. {  
  9.     handleExceptionOnFirstStep();  
  10.     handleExceptionOnSecondStep();    
  11. }  
  12.   
  13. //...  

我们就可以使用do{}while(0)来简化:

[cpp]  view plain copy
  1. void detectException()  
  2. {  
  3.     do  
  4.     {  
  5.         if(occurFirstException())  
  6.             break;  
  7.   
  8.         //...  
  9.   
  10.         if(occurSecondException())  
  11.             break;  
  12.   
  13.         //...  
  14.   
  15.     }while(0);    
  16.   
  17.     handleExceptionOnFirstStep();  
  18.     handleExceptionOnSecondStep();  
  19. }  

最后

以上就是拼搏夕阳为你收集整理的解决代码逻辑嵌套过多的技巧 do{} while(0);的全部内容,希望文章能够帮你解决解决代码逻辑嵌套过多的技巧 do{} while(0);所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部