讲师博文
程序跳转之longjmp 来源 : 未知     2018-09-29

#include <stdio.h>

#include <setjmp.h>

jmp_buf env1;

int func(void);

int main(int argc, const char *argv[])

{

int ret = 0;

printf("Before setjmp.\n");

// 保存当前的环境变量,longjmp 依赖此环境变量进行跳转

// 此函数的返回值,非跳转时,返回值为0,当对方跳转来,

// 返回值为longjmp的参数

ret = setjmp(env1);

if(ret == 0)

{

func();

}

else

{

printf("+++++++++, ret = %d\n", ret);

}

printf("After setjmp.\n");

return 0;

}

int func(void)

{

printf("In func.\n");

//完成程序的跳转,具有全局的作用范围,函数之间,文件之间,线程与线程之间

longjmp(env1, 3);

return 0;

}

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:C++ 类构造函数

下一篇:Linux多线程与同步

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号