https://blog.csdn.net/u012062760/article/details/46446207
关于while(0)实际上是用来宏定义的,这样的宏定义可以避免调用的时候出错。
如下面这种较为复杂的定义:(这里的定义就是把foo(x) 看做 bar(x); baz(x)
)
#define foo(x) bar(x); baz(x)
但是上面的这种写法,有可能在调用的时候会带来错误。
所以一般会用 do while(0) 进行宏定义。
#define foo(x) do { bar(x); baz(x); } while (0)