Возможный дубликат:
Почему иногда в макросах C / C ++ используются бессмысленные операторы do / while и if / else?
Я встретил код, как показано ниже:
#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