经常看到类似宏定义,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语句对应
本文探讨了C/C++中宏定义的特殊用法do{...}
经常看到类似宏定义,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语句对应

被折叠的 条评论
为什么被折叠?