【发布时间】:2012-03-18 18:03:34
【问题描述】:
可能重复:
Why are there sometimes meaningless do/while and if/else statements in C/C++ macros?
我遇到了如下代码:
#define ev_io_init(ev,cb,fd,events) \
do { \
ev_init ((ev), (cb)); \
ev_io_set ((ev),(fd),(events)); \
} while (0)
我想知道作者为什么在这里使用do { } while (0)。
这有什么区别吗?
#define ev_io_init(ev,cb,fd,events) { \
ev_init ((ev), (cb)); \
ev_io_set ((ev),(fd),(events)); \
}
顺便说一句:代码来自 libev,ev_local.h
【问题讨论】:
标签: c c-preprocessor libev