do{} while(0) 的意义和用法
1.辅助定义复杂的宏,避免引用的时候出错。
例如:#define DOSOMETHING() \
fool1(); \
fool2(); \
如果在调用的时候写:
if (a > 0)
DOSOMETHING()
展开之后是:
if (a > 0)
fool1();
fool2();
所以,采用do {} while(0) , 来进行宏的定义。
2.避免使用goto对程序流进行统一的控制。
3.避免空宏引起的warning
4.定义一个单独的函数快来实现复杂的操作。