【发布时间】:2009-05-29 00:05:12
【问题描述】:
可能的重复:
Do-While and if-else statements in C/C++ macros
do { … } while (0) — what is it good for?
我正在阅读 linux 内核,发现很多这样的宏:
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
为什么他们使用它而不是简单地在 {} 中定义它?
【问题讨论】:
标签: c macros linux-kernel