Saltar para o conteúdo

setjmp.h

Origem: Wikipédia, a enciclopédia livre.
A versão imprimível já não suportada e pode apresentar defeitos de composição gráfica. Atualize os favoritos do seu navegador e use a função de impressão padrão do navegador.
Biblioteca padrão do C

setjmp.h é um arquivo cabeçalho da biblioteca padrão da linguagem de programação C que fornece declarações para funções ou macros para funcionalidade de saltos que não seguem a forma usual de chamadas para subrotinas e a sequência de retornos[1].

Um uso típico para as funções setjmp e longjmp é a implementação de um mecanismo de tratamento de exceções[2] que utiliza a longjmp para re-estabelecer o estado de um programa ou thread, mesmo numa chamada com múltiplos níveis[3]. Outro uso para setjmp é criar uma sintaxe similar a co-rotinas.

Exemplo

O exemplo abaixo mostra a ideia básica do setjmp:

#include <stdio.h>
#include <setjmp.h>

static jmp_buf controladorJmp;

void segunda(void) {
  printf("segunda\n"); // será impresso na tela

  // pula de volta para onde setjmp() foi chamada,
  // e faz com que ela agora retorne 1
  longjmp(controladorJmp, 1);
}

void primeira(void) {
  segunda();
  printf("primeira\n"); // não será impresso na tela
}

int main() {
  if (setjmp(controladorJmp) == 0) {
    primeira();
  } else { // quando longjmp() é chamada, setjmp() retornou 1
    printf("main\n"); // será impresso na tela
  }
  return 0;
}

Quando executado, o programa acima imprime na tela:

segunda
main

Referências

  1. «<setjmp.h>». The Open Group. Consultado em 31 de dezembro de 2011 
  2. «Exception handling with longjmp()». Simplified Wrapper Interface Generator. 4 de agosto de 1997. Consultado em 31 de dezembro de 2011 
  3. «setjmp(3) - Linux man page». Linux Man Pages. Consultado em 31 de dezembro de 2011 
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.