#define do {} while (0)
好处:
- 增强代码适应性
- 增加代码扩展性
- 增加代码灵活性
适应性
普通宏函数:#define FOO(x) foo(x);bar(x);
在无包裹的 if() else 内会出现语法错误和隐藏的逻辑错误。
添上包裹的普通宏函数: #define FOO(x) {foo(x);bar(x);}
函数在调用时会形成 {statements...}; 的语法错误
扩展性
可使用嵌套宏 #define FOO(x) do { OTHER_FOO(x) } while (0)
灵活性
可从宏中break出来,e.g.:
#define FOO(x) do { \
foo(x); \
if(condion(x)) \
break; \
bar(x) \
...
} while(0)

浙公网安备 33010602011771号