Duplicar posible:
Why are there sometimes meaningless do/while and if/else statements in C/C++ macros?¿Por qué usar do {} while (0) en la definición de macro?
me encontré con un código como a continuación:
#define ev_io_init(ev,cb,fd,events) \
do { \
ev_init ((ev), (cb)); \
ev_io_set ((ev),(fd),(events)); \
} while (0)
Quiero saber por qué el autor utiliza do { } while (0)
aquí. ¿Hay alguna diferencia con esto?
#define ev_io_init(ev,cb,fd,events) { \
ev_init ((ev), (cb)); \
ev_io_set ((ev),(fd),(events)); \
}
Por cierto: el código es de libev, ev_local.h
... lo hace, pero por favor no ... – moonshadow
Se reduce el número de anidación if-else . – shuva