ExpertiDict

C · Intermediário · Inglês · Técnico

goto

/ˈɡoʊ.tuː/palavra-chave

Salto incondicional para um rótulo na mesma função. Apesar da má fama, é o idioma de C para centralizar a liberação de recursos quando algo falha no meio.

Onde usar

Em kernels e bibliotecas, funções com vários malloc e fopen usam goto cleanup para liberar tudo em um único lugar, em vez de duplicar free em cada return.

Em código

#include <stdlib.h>
void f(void) {
  char *a = malloc(8), *b = malloc(8);
  if (!a || !b) goto fim;
  /* usa a e b */
fim:
  free(a); free(b);
}

Exemplos

On any failure we goto cleanup and free everything there.

Em qualquer falha a gente dá goto cleanup e libera tudo lá.

Using goto for error handling is common in C.

Usar goto para tratar erros é comum em C.

Cuidado

Usar goto para montar laços e fluxos tortuosos; o uso aceito é só para saída antecipada e limpeza.

Sinônimos

salto incondicional

Origem

De go to, ir para.

Veja também

Todos os termos de C