do while(0)的另一个用途:消除goto语句
2015-07-13 18:21
706 查看
代码冗余是消除了,但是我们引入了C++中身份比较微妙的goto语句,虽然正确的使用goto可以大大提高程序的灵活性与简洁性,但太灵活的东西往往是很危险的,它会让我们的程序捉摸不定,那么怎么才能避免使用goto语句,又能消除代码冗余呢,请看do...while(0)循环:
version3
bool Execute()
{
// 分配资源
int *p = new int;
bool bOk(true);
do
{
// 执行并进行错误处理
bOk = func1();
if(!bOk) break;
bOk = func2();
if(!bOk) break;
bOk = func3();
if(!bOk) break;
// ..........
}while(0);
// 释放资源
delete p;
p = NULL;
return bOk;
}
我的个人评论:do while(0)在此处确实妙,但是, 用goto未尝不可, 不要将goto鄙视得一无是处。
version3
bool Execute()
{
// 分配资源
int *p = new int;
bool bOk(true);
do
{
// 执行并进行错误处理
bOk = func1();
if(!bOk) break;
bOk = func2();
if(!bOk) break;
bOk = func3();
if(!bOk) break;
// ..........
}while(0);
// 释放资源
delete p;
p = NULL;
return bOk;
}
我的个人评论:do while(0)在此处确实妙,但是, 用goto未尝不可, 不要将goto鄙视得一无是处。
相关文章推荐
- goahead win 移植
- Django用户管理及认证
- Algorithm --> 阶乘和因子
- 排列组合问题:n个数中取m个(Golang实现)
- Letting go
- Golang 工程组织
- golang 二进制转十进制实现方式
- django 问题解决
- Use the Right Algorithm and Data Structure
- POJ 3224 Go for Lab Cup!(水~)
- golang表单提交与服务器的交互
- django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)
- [LeetCode] 4 Median of Two Sorted Arrays
- HangOver
- About Django
- 图算法(1):Dijkstra's algorithm
- Django笔记 —— Admin(Django站点管理界面)
- django框架介绍
- mongod连接不上的原因
- POJ 2262 Goldbach's Conjecture 数学常识 难度:0