ExpertiDict

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

setjmp e longjmp

/ˈsɛt.dʒɑmp ən ˈlɔŋ.dʒɑmp/substantivo

Par de funções de setjmp.h que salva um ponto de execução e depois salta de volta a ele a partir de qualquer função mais profunda. É o mecanismo mais próximo de exceções em C.

Onde usar

Usado para recuperação de erros em parsers e bibliotecas como libpng. O salto ignora o retorno normal, então liberações de recursos intermediários são puladas.

Em código

jmp_buf env;
if (setjmp(env) == 0) {
  falha(); // chama longjmp(env, 1)
} else {
  puts("recuperado");
}

Exemplos

The parser uses longjmp to bail out on a fatal error.

O parser usa longjmp para abandonar tudo num erro fatal.

longjmp skips the cleanup of everything in between.

O longjmp pula a limpeza de tudo que está no meio.

Cuidado

Esquecer que variáveis locais modificadas entre setjmp e longjmp ficam indeterminadas, a menos que sejam volatile.

Sinônimos

saltos não locais

Veja também

Todos os termos de C