Macro de biblioteca C - setjmp ()
Descripción
La macro de la biblioteca C int setjmp(jmp_buf environment), guarda la corriente environment en el entorno variable para su uso posterior por la función longjmp(). Si esta macro regresa directamente de la invocación de la macro, devuelve cero pero si regresa de unalongjmp() llamada a la función, luego devuelve el valor pasado a longjmp como segundo argumento.
Declaración
A continuación se muestra la declaración de la macro setjmp ().
int setjmp(jmp_buf environment)
Parámetros
environment - Este es el objeto de tipo jmp_buf donde se almacena la información del entorno.
Valor devuelto
Esta macro puede regresar más de una vez. La primera vez, en su invocación directa, siempre devuelve cero. Cuando se llama a longjmp con la información establecida en el entorno, la macro vuelve de nuevo; ahora devuelve el valor pasado a longjmp como segundo argumento.
Ejemplo
El siguiente ejemplo muestra el uso de la 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");
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
Jump function call
Returned from a longjmp() with value = tutorialspoint.com