ExpertiDict

C · Avançado · Português · Técnico

do while zero

/du waɪl ˈzɛ.ɾu/substantivo

Idioma que envolve o corpo de uma macro em do { } while (0), para ela se comportar como um único comando, aceitando o ponto e vírgula final.

Onde usar

Sem ele, uma macro com dois comandos quebra num if sem chaves: só o primeiro fica condicionado. Aparece em quase toda macro de várias linhas, como as do kernel Linux.

Em código

#define LIMPA(p) do { \
  free(p); \
  (p) = NULL; \
} while (0)
if (x)
  LIMPA(buf);
else
  puts("sem buf");

Exemplos

Envolva a macro no do while zero para ela funcionar dentro de um if.

Sem o do while zero, esse else dá erro de sintaxe.

Cuidado

Usar só chaves { }: o ponto e vírgula depois da macro quebra um else seguinte.

Sinônimos

do-while(0)

Veja também

Todos os termos de C