1.#define DOSOMETHING() \ do{ \ foo1();\ foo2();\ }while(0)\ ... if(a>0) DOSOMETHING();
这样,宏被展开后,才会保留初始的语义
2.
避免空宏引起的warning
内核中由于不同架构的限制,很多时候会用到空宏,在编译的时候,空宏会给出warning,为了避免这样的warning,就可以使用do{}while(0)来定义空宏:
#define EMPTYMICRO do{}while(0)
----------------------------
do{…}while(0)的意义和用法
【1】http://www.spongeliu.com/415.html
【2】https://www.cnblogs.com/lanxuezaipiao/p/3535626.html
[3]http://blog.youkuaiyun.com/luoweifu/article/details/38563161