函数式宏定义经常写成这样:
<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) 括起来呢?不括起来会有什么问题呢?