概述
1,解决逻辑嵌套过多,代替goto语句
if( A 文件存在 )
{执行 A 文件的相关操作;
if( B 文件不存在|| 用户允许覆盖原有B文件)
{
复制A文件为B文件;
if(复制文件成功)
{
打开B文件;
if(打开文件成功)
{
写入文件;
if(写入成功)
{
关闭B文件;
if(关闭成成功)
{
执行其它必须在一切成功后进行的操作。
……
}
}
}
}
}
}
改为:
{
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内的数个重复命令语句:
比如说这样的代码:
- if(occurFirstException())
- {
- handleExceptionOnFirstStep();
- handleExceptionOnSecondStep();
- }
- else if(occurSecondException())
- {
- handleExceptionOnFirstStep();
- handleExceptionOnSecondStep();
- }
- //...
我们就可以使用do{}while(0)来简化:
- void detectException()
- {
- do
- {
- if(occurFirstException())
- break;
- //...
- if(occurSecondException())
- break;
- //...
- }while(0);
- handleExceptionOnFirstStep();
- handleExceptionOnSecondStep();
- }
最后
以上就是拼搏夕阳为你收集整理的解决代码逻辑嵌套过多的技巧 do{} while(0);的全部内容,希望文章能够帮你解决解决代码逻辑嵌套过多的技巧 do{} while(0);所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复