📜  C语言中setjump和longjump的概念

📅  最后修改于: 2021-05-30 06:45:10             🧑  作者: Mango

“ Setjump”和“ Longjump”在C标准库的头文件setjmp.h中定义。

  • setjump(jmp_buf buf) :使用buf记住当前位置并返回0。
  • longjump(jmp_buf buf,i) :返回到buf指向的位置并返回i。
// A simple C program to demonstrate working of setjmp() and longjmp()
#include
#include
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;
}

输出 :

Geek4
Welcome to GeeksforGeeks
Geek3

这些函数的主要特征是提供一种偏离标准调用和返回序列的方式。这主要用于在C中实现异常处理。setjmp可以像try一样使用(在C++和Java这样的语言中)。对longjmp的调用可以像throw一样使用(请注意,longjmp()将控制权转移到setjmp()设置的点)。

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。