Возможный дубликат:
Почему иногда существуют бессмысленные операторы do/while и if/else в макросах C/С++?
Я встретил код, как показано ниже:
#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)); \
}
BTW: код из libev, ev_local.h