不同函数之间的跳转setjmp和longjmp
生活随笔
收集整理的這篇文章主要介紹了
不同函数之间的跳转setjmp和longjmp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? 我們學過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環境高級編程
總結
以上是生活随笔為你收集整理的不同函数之间的跳转setjmp和longjmp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rand和srand
- 下一篇: setbuf()关闭缓冲