Macro multilínea C: hacer / while (0) vs bloque de alcance [duplicado]
Posibles duplicados:
¿De qué sirve hacer while (0) cuando definimos una macro?
¿Por qué a veces hay sentencias do / while y if / else en las macros C / C ++ sin sentido?
do {…} while (0) ¿para qué sirve?
He visto algunas macros C de varias líneas que están envueltas dentro de un bucle do / while (0) como:
#define FOO \ do { \ do_stuff_here \ do_more_stuff \ } while (0)
¿Cuáles son los beneficios (si los hay) de escribir el código de esa manera en lugar de usar un bloque básico?
#define FOO \ { \ do_stuff_here \ do_more_stuff \ }