不同函数之间的跳转setjmp和longjmp
生活随笔
收集整理的這篇文章主要介紹了
不同函数之间的跳转setjmp和longjmp
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? ? ? ? ? ? 我們學(xué)過C語言中的goto,只能當(dāng)前函數(shù)里面跳轉(zhuǎn)是不能跨越函數(shù)的。setjmp和longjmp卻可以跨越函數(shù)跳轉(zhuǎn)。
#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); }編譯運(yùn)行,打印:jmp
函數(shù)從if里面返回了,則證明能跨函數(shù)跳轉(zhuǎn),其應(yīng)用于在深層嵌套調(diào)用中錯(cuò)誤的情況。
參考資料:unix環(huán)境高級(jí)編程
總結(jié)
以上是生活随笔為你收集整理的不同函数之间的跳转setjmp和longjmp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rand和srand
- 下一篇: setbuf()关闭缓冲