国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

知識分享:C語言如何對異常進(jìn)行捕獲?

2022-02-19 16:37 作者:C語言編程__Plus  | 我要投稿

C++中可以使用try...catch對異常進(jìn)行捕獲,C語言呢?可能很多人都不知道,C語言中也有類似的接口,可以保存程序運(yùn)行的位置然后在特定的位置進(jìn)行恢復(fù)使得程序能夠回到先前保存的地方。而這整個(gè)功能的主要依靠setjmp和longjmp來實(shí)現(xiàn)。

1 int setjmp(jmp_buf env)

setjmp需要被先調(diào)用,調(diào)用之后,setjmp就保存了一份程序的計(jì)數(shù)器和當(dāng)前棧頂指針,當(dāng)然,根據(jù)需要也可以保存一些變量的初始化信息。返回返回值為0。?使用方法如下面代碼所示:


2 void longjmp(jmp_buf?env,int val)

在調(diào)用了setjmp后調(diào)用longjmp可以恢復(fù)保存的值并有效的將setjmp保存的計(jì)數(shù)器和棧信息恢復(fù)到之前的狀態(tài),這個(gè)過程也是堆棧展開的過程。因?yàn)閘ongjmp是回到原來保存程序狀態(tài)的位置,因此也可以稱之為從哪里來到哪里去。在上面的代碼中使用longjmp后,程序執(zhí)行效果如下所示:


如上,在調(diào)用TestSuit后,函數(shù)里面因?yàn)檎{(diào)用了longjmp因此程序狀態(tài)恢復(fù)到setjmp的位置,又因?yàn)樵趌ongjmp的第二個(gè)參數(shù)設(shè)置了setjmp的返回值,因此TestSuit函數(shù)中l(wèi)ongjmp后的代碼將不被執(zhí)行。程序返回到main函數(shù),執(zhí)行if條件值為真后的語句。上面代碼的運(yùn)行結(jié)果為:


- EOF -

寫在最后:對于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

微信公眾號:C語言編程學(xué)習(xí)基地

C語言零基礎(chǔ)入門教程(83集全)

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

編程學(xué)習(xí)書籍分享:


知識分享:C語言如何對異常進(jìn)行捕獲?的評論 (共 條)

分享到微博請遵守國家法律
遵义县| 德阳市| 肃宁县| 资源县| 乌兰浩特市| 沛县| 方城县| 霍城县| 全椒县| 个旧市| 海安县| 石屏县| 长岭县| 上蔡县| 宁武县| 双江| 黑龙江省| 仁怀市| 盐边县| 长治市| 长春市| 清水县| 徐闻县| 叶城县| 慈利县| 丹凤县| 光山县| 伊金霍洛旗| 新营市| 松滋市| 乐亭县| 施甸县| 灵璧县| 临颍县| 沧源| 南康市| 都江堰市| 邳州市| 武隆县| 视频| 遂昌县|