您的位置:首页 > 其它

不同函数之间的跳转setjmp和longjmp

2017-11-07 17:15 771 查看
                  我们学过C语言中的goto,只能当前函数里面跳转是不能跨越函数的。setjmp和longjmp却可以跨越函数跳转。

#include <stdio.h>
#include <setjmp.h>

void f1(void);
jmp_buf jmpbuffer;

int main(void)
{
if(setjmp(jmpbuffer)!=0)
{
printf("jmp\n");
return 0;
}

f1();

return 0;
}

void f1()
{
longjmp(jmpbuffer,1);
}


编译运行,打印:jmp

函数从if里面返回了,则证明能跨函数跳转,其应用于在深层嵌套调用中错误的情况。

参考资料:unix环境高级编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: