C macro multilinea: do / while (0) vs scope block


Answers

Question

Possibili duplicati:
A cosa serve fare while (0) quando definiamo una macro?
Perché ci sono talvolta dichiarazioni do / while e if / else prive di significato in macro C / C ++?
do {...} while (0) a cosa serve?

Ho visto alcune macro C multi-linea che sono avvolte in un ciclo do / while (0) come:

#define FOO \
  do { \
    do_stuff_here \
    do_more_stuff \
  } while (0)

Quali sono i vantaggi (se ce ne sono) di scrivere il codice in questo modo anziché utilizzare un blocco di base:

#define FOO \
  { \
    do_stuff_here \
    do_more_stuff \
  }



Related