Concepto de setjump y longjump en C

«Setjump» y «Longjump» se definen en setjmp.h , un archivo de encabezado en la biblioteca estándar de C.

  • setjump(jmp_buf buf) : usa buf para recordar la posición actual y devuelve 0.
  • longjump(jmp_buf buf, i) : Vuelve al lugar al que apunta buf y devuelve i .
// A simple C program to demonstrate working of setjmp() and longjmp()
#include<stdio.h>
#include<setjmp.h>
jmp_buf buf;
void func()
{
    printf("Welcome to GeeksforGeeks\n");
  
    // Jump to the point setup by setjmp
    longjmp(buf, 1);
  
    printf("Geek2\n");
}
  
int main()
{
    // Setup jump position using buf and return 0
    if (setjmp(buf))
        printf("Geek3\n");
    else
    {
        printf("Geek4\n");
        func();
    }
    return 0;
}

Producción :

Geek4
Welcome to GeeksforGeeks
Geek3

La característica principal de esta función es proporcionar una forma que se desvía de la secuencia estándar de llamada y devolución. Esto se usa principalmente para implementar el manejo de excepciones en C. setjmp se puede usar como try (en lenguajes como C++ y Java). La llamada a longjmp se puede usar como throw (Tenga en cuenta que longjmp() transfiere el control al punto establecido por setjmp()).

Este artículo es una contribución de Aditya Chatterjee . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *