不同函数之间的跳转setjmp和longjmp
2017-11-07 17:15
771 查看
我们学过C语言中的goto,只能当前函数里面跳转是不能跨越函数的。setjmp和longjmp却可以跨越函数跳转。
编译运行,打印:jmp
函数从if里面返回了,则证明能跨函数跳转,其应用于在深层嵌套调用中错误的情况。
参考资料:unix环境高级编程
#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环境高级编程
相关文章推荐
- c语言中的函数间的跳转函数setjmp和longjmp(zz)
- C语言接口与实现【第四章】 setjmp/longjmp非局部跳转函数分析
- setjmp/longjmp非局部跳转函数分析
- linux C全局跳转函数 setjmp longjmp
- c语言中的函数间的跳转函数setjmp和longjmp
- Linux中的函数间跳转:setjmp()和longjmp()
- 非局部跳转函数 setjmp 和 longjmp .
- 函数内部跳转---setjmp和longjmp
- C语言长跳转函数setjmp和longjmp
- 非局部跳转语句---setjmp和longjmp函数
- setjmp与longjmp非局部跳转函数的使用
- 非局部跳转函数 setjmp 和 longjmp
- c语言中的函数间的跳转函数setjmp和longjmp
- 【setjmp和longjmp 】 C语言的非局部跳转:setjmp和longjmp(跨函数长跳转)
- 程序指令的异常跳转setjmp, longjmp和异常
- 非本地跳转之setjmp与longjmp
- setjmp longjmp 非局部跳转
- c语言基础函数——setjmp()和longjmp()
- (C)非局部跳转语句(setjmp和longjmp)
- [Effective JavaScript 笔记]第18条:理解函数调用、方法调用及构造函数调用之间的不同