#define do {} while (0)

好处:

  1. 增强代码适应性
  2. 增加代码扩展性
  3. 增加代码灵活性

适应性

普通宏函数:#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)
posted @ 2021-02-02 16:53  汪淼焱  阅读(162)  评论(0)    收藏  举报