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

来源:互联网 发布:rational rose mac 编辑:程序博客网 时间:2024/05/16 19:51

 

经常看到类似宏定义,do{...}while(0)

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

如果去掉do{...}while(0),如下代码:

if(NULL != p) SAFE_DELETE(p)else ...do sth...

将导致两个问题:

1)if语句后面有两个语句,无论测试是否通过,第二个语句都会得到执行

2)else语句没有对应的if语句对应


 

 

 

 

 

 

 

                                             
0 0
原创粉丝点击