c: setjmp.h 库的使用
一、代码
[root@rockylinux tmp]# cat setjmp.c
/* longjmp example */
#include /* printf */
#include /* jmp_buf, setjmp, longjmp */
int main(int argc, char *argv)
{
jmp_buf env;
int var=2, i=0;
var=setjmp(env); // 设置“返回位置”
i++;
printf("time=%d\n", i);
if(i<5)longjmp(env, 5); // 启用“返回位置”
return 0;
}
[root@rockylinux tmp]#
[root@rockylinux tmp]#
[root@rockylinux tmp]# ./setjmp
time=1
time=2
time=3
time=4
time=5
[root@rockylinux tmp]#
[root@rockylinux tmp]#
二、setjmp() 和 longjmp()分析
1、setjmp():设置“返回点”位置;
2、longjmp():跳转到“返回点”;
3、说明:longjmp()跳转至“返回点”以后,继续顺序执行“setjmp()”后面的代码;
4、setjmp——longjmp机制,实现了代码执行次序跳转的功能;类似于goto——label机制。