函数式宏定义用do...while(0)的好处

函数式宏定义经常写成这样:
<pre lang="c" escaped="true">
#define device_init_wakeup(dev, val)
do {
device_can_wakeup(dev) = !!(val);
device_set_wakeup_enable(dev, val);
}while(0)

</pre>

为什么要用do {...} while(0) 括起来呢?不括起来会有什么问题呢?

原文地址:https://www.cnblogs.com/liweilijie/p/4984193.html