do{......} while{0} 主要使用在宏定义中,例子如下:
#define SAFE_FREE(p) do { free(p); p= NULL;} while(0)
if (NULL != p)
SAFE_FREE(p);
else
... //do something
如果在宏定义中去掉do{......} while{0}会存在两个问题:
1. if 分支后有两个语句,导致else分支没有对应的if ,会编译失败
2. 假设没有else分支,则SAFE_FREE不会执行
阅读(1214) | 评论(2) | 转发(1) |