在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 1. do...while(0)消除goto语句。
bool
Execute()
{ // 分配资源 int * p = new int ; bool bOk( true ); // 执行并进行错误处理 bOk = func1(); if ( ! bOk) { delete p; p = NULL; return false ; } bOk = func2(); if ( ! bOk) { delete p; p = NULL; return false ; } bOk = func3(); if ( ! bOk) { delete p; p = NULL; return false ; } // .......... // 执行成功,释放资源并返回 delete p; p = NULL; return true ; }
bool
Execute()
{ // 分配资源 int * p = new int ; bool bOk( true ); // 执行并进行错误处理 bOk = func1(); if ( ! bOk) goto errorhandle; bOk = func2(); if ( ! bOk) goto errorhandle; bOk = func3(); if ( ! bOk) goto errorhandle; // .......... // 执行成功,释放资源并返回 delete p; p = NULL; return true ; errorhandle: delete p; p = NULL; return false ; }
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; }
2 宏定义中的do...while(0) 也许你会说,我们代码的习惯是在每个判断后面加上{}, 就不会有这种问题了,也就不需要do...while了,如: |
do-while(0)妙用
最新推荐文章于 2023-06-27 18:15:26 发布
do-while(0)妙用
2008-04-22 22:05