Macro da biblioteca C - setjmp ()
Descrição
A macro da biblioteca C int setjmp(jmp_buf environment), salva o atual environment no ambiente variável para uso posterior pela função longjmp(). Se esta macro retornar diretamente da chamada da macro, ela retornará zero, mas se retornar de umlongjmp() chamada de função, ele retorna o valor passado para longjmp como um segundo argumento.
Declaração
A seguir está a declaração para a macro setjmp ().
int setjmp(jmp_buf environment)
Parâmetros
environment - Este é o objeto do tipo jmp_buf onde as informações do ambiente são armazenadas.
Valor de retorno
Esta macro pode retornar mais de uma vez. Na primeira vez, em sua invocação direta, ele sempre retorna zero. Quando longjmp é chamado com as informações definidas para o ambiente, a macro retorna novamente; agora ele retorna o valor passado para longjmp como segundo argumento.
Exemplo
O exemplo a seguir mostra o uso da macro setjmp ().
#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>
int main () {
int val;
jmp_buf env_buffer;
/* save calling environment for longjmp */
val = setjmp( env_buffer );
if( val != 0 ) {
printf("Returned from a longjmp() with value = %s\n", val);
exit(0);
}
printf("Jump function call\n");
jmpfunction( env_buffer );
return(0);
}
void jmpfunction(jmp_buf env_buf) {
longjmp(env_buf, "tutorialspoint.com");
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
Jump function call
Returned from a longjmp() with value = tutorialspoint.com