do{...}while(0)的应用

来源:互联网 发布:ubuntu svn 库建立 编辑:程序博客网 时间:2024/05/22 00:49

do{…}while(0)的应用

do{…}while(0)有助于提高代码的健壮性
(1)在定义复杂的宏时,利用do{…}while(0)可以避免宏展开后引用出错
例:

#define SAFE_DELETE(p) do{delete p; p=NULL;}while(0);

在上述宏定义中,如果不用do{…}while(0),将宏定义成如下形式:

#define SAFE_DELETE(p) delete p; p=NULL;

当该宏展开的时候就会出现错误。
(2)利用do{…}while(0)可以消除程序代码中的goto语句
例:

if(AllocateResource(...)==FALSE) goto FAILED;if(AllocateMemory(...)==FALSE) goto FALIED;...FAILED: ...

上述代码在分配资源或内存时可能由于系统资源或内存不足而导致失败,此时使用goto语句可以对资源或内存分配失败的情况进行统一的处理,但是在程序设计中一般不建议使用goto语句,因此使用do{…}while(0)重新构建上述代码如下:

do{if(AllocateResource(...)==FALSE) break;if(AllocateMemory(...)==FALSE) break;}while(0);//handle errors...
0 0
原创粉丝点击