色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 關(guān)于linux中非局部跳轉(zhuǎn)的簡單使用

關(guān)于linux中非局部跳轉(zhuǎn)的簡單使用 時間:2018-09-21      來源:未知

大家知道在C語言中有一個不是經(jīng)常使用的關(guān)鍵字,那就是goto。goto語句在編程的過程中如果濫用的話就會造成整個代碼邏輯容易混亂,大大降低了代碼的可讀性和可維護(hù)性。而且即使使用goto語句進(jìn)行跳轉(zhuǎn)也是有局限性的,那就是goto語句是一個實(shí)現(xiàn)局部跳轉(zhuǎn)的關(guān)鍵字,也就是只能在一個函數(shù)中進(jìn)行跳轉(zhuǎn),它是無法在不同的函數(shù)中實(shí)現(xiàn)跳轉(zhuǎn)的。那么如何實(shí)現(xiàn)在不同的函數(shù)中進(jìn)行非局部的跳轉(zhuǎn)呢?而setjmp和longjmp函數(shù)就可以幫助我們實(shí)現(xiàn)。

setjmp和longjmp函數(shù)是庫函數(shù),那么setjmp和longjmp如何使用呢?下邊咱們看一下函數(shù)接口。

int setjmp(jmp_buf env);

功能:就是確定longjmp的返回目標(biāo),我們可以通過返回值來確定setjmp函數(shù)的調(diào)用是第一次調(diào)用,還是longjmp返回。如果返回值是0,那么表示是設(shè)置longjmp的返回位置,否則表示是從longjmp中返回。

void longjmp(jmp_buf env, int val);

功能:執(zhí)行跳轉(zhuǎn),其中參數(shù)env就是setjmp函數(shù)設(shè)置后的env,參數(shù)val就是返回到setjmp位置之后setjmp的返回值。

示例代碼如下:

#include

#include

jmp_buf env;

void fun(void)

{

puts("in the fun");

longjmp(env, 1);

}

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

{

switch (setjmp(env))

{

case 0:

puts("setjmp first ..");

break;

case 1:

puts("return from fun ..");

break;

}

fun();

return 0;

}

雖然使用setjmp和longjmp函數(shù)的組合可以實(shí)現(xiàn)非局部的跳轉(zhuǎn),但是在使用時也需要謹(jǐn)慎。比如下邊的例子:

void fun_1(void)

{

….

setjmp(env);

….

return;

}

void fun_2(void)

{

….

Longjmp(env, 1);

}

該代碼實(shí)現(xiàn)了從fun_2函數(shù)中跳回到fun_1函數(shù)中,但是如果在執(zhí)行l(wèi)ongjump函數(shù)時fun_1函數(shù)已經(jīng)返回,那么就longjmp的返回就會出錯,因?yàn)閒un_1函數(shù)調(diào)用完畢之后棧幀就會被其他函數(shù)使用,那么longjmp就不可能返回了, 因此在使用它們進(jìn)行跳轉(zhuǎn)時要謹(jǐn)慎操作。

上一篇:Thumb 編程模型

下一篇:java代碼與純C代碼混編完成android應(yīng)用的開發(fā)

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 欧美精产国品一二三类产品特点 | 中文国产成人精品久久一 | 免费看黄色电视 | 亚洲va欧美va日韩va成人网 | 野花在线无码视频在线播放 | 黄色片视频免费观看 | 少妇高潮喷水久久久影院 | 国产在线观看免费麻豆 | 青草影院内射中出高潮 | MM1313亚洲国产精品无码 | 国产精品爽爽久久久久久竹菊 | 97久久超碰精品视觉盛宴 | 97久久超碰国产精品最新 | 蜜臀久久99精品久久久画质超高清 | 新香蕉少妇视频网站 | 一个人看的www视频免费观看 | 欧美三根一起进三p | 美女爆乳裸体WWW免费网站 | 亚一区| 最新中文字幕一区二区三区 | 免费国产黄网站在线观看动图 | 男女一边摸一边做羞羞的事情免费 | 色妺妺视频网 | 无码av动漫精品专区 | 18禁止观看强奷在线看 | 新版天堂网www天堂在线资源 | 嫩草影院官网 | 久青草国产在视频在线观看 | 国产亚洲综合一区二区 | 亚洲av无码之国产精品网址 | 久久久老熟女一区二区三区 | 2018年国内精品视频 | 亚洲综合欧美在线一区在线播放 | 少妇高潮水多太爽了动态图 | 日韩免费一区二区三区高清 | 麻豆精品人妻无码一区二区三区 | 国产精品久久久久久户外露出 | 亚洲乱码av一区二区三区中文在线: | 亚洲精品久久乱码水蜜桃摄影 | 97一期涩涩97片久久久久久久 | 狠狠狠狠狠干 |