经常看到类似宏定义,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语句对应
经常看到类似宏定义,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语句对应