lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

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机制

 

posted on 2022-07-01 14:33  lnlidawei  阅读(45)  评论(0编辑  收藏  举报