“ 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基础课程》。