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