English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Biblioteca Padrão do C - <setjmp.h>
Uso e exemplo da macro setjmp() da biblioteca C Macro da biblioteca C int setjmp(jmp_buf ambiente)
Declaração
int setjmp(jmp_buf ambiente)
Ambiente -- Este é um objeto do tipo jmp_buf usado para armazenar informações de ambiente.
Esta macro pode retornar mais de uma vez. A primeira vez, quando chamada diretamente, sempre retorna zero. Quando longjmp é chamado com informações de ambiente configuradas, esta macro retorna novamente, e o valor retornado será passado para longjmp como o segundo parâmetro.
O exemplo a seguir demonstra o uso da macro setjmp().
#include <stdio.h> #include <setjmp.h> static jmp_buf buf; void second(void) { printf("second\n"); // Imprimir longjmp(buf,1); // Volta para o local de chamada setjmp - Faz com que setjmp retorne o valor1 } void first(void) { second(); printf("first\n"); // Impossível executar até esta linha } int main() { if (! setjmp(buf)) { first(); // Antes de entrar nesta linha, setjmp retorna 0 } else { // Quando longjmp salta de volta, setjmp retorna1Portanto, entra nesta linha printf("main\n"); // Imprimir } return 0; }
Vamos compilar e executar o programa acima, o que produzirá o seguinte resultado:
second main