C macro de várias linhas: do / while (0) vs bloco de escopo [duplicado]

Duplicatas Possíveis:
Qual é a utilidade de fazer while (0) quando definimos uma macro?
Por que existem, por vezes, instruções do / while e if / else sem sentido em macros C / C ++?
do {…} while (0) para que serve?

Eu vi algumas macros C multi-line que são empacotadas dentro de um loop do / while (0) como:

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

Quais são os benefícios (se houver) de escrever o código dessa maneira ao invés de usar um bloco básico:

#define FOO \
  { \
    do_stuff_here \
    do_more_stuff \
  }

questionAnswers(1)

yourAnswerToTheQuestion