日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 嵌入式微處理器
[導(dǎo)讀]很多書籍都會(huì)把“”goto“”當(dāng)成反面教材使用,認(rèn)為如果使用不當(dāng),將會(huì)造成很多意想不到的問題。但goto作為C語言的一部分,存在即合理,goto有它的缺點(diǎn),也有它的優(yōu)點(diǎn)。



很多書籍都會(huì)把“”goto“”當(dāng)成反面教材使用,認(rèn)為如果使用不當(dāng),將會(huì)造成很多意想不到的問題。但goto作為C語言的一部分,存在即合理,goto有它的缺點(diǎn),也有它的優(yōu)點(diǎn)。
缺點(diǎn):
很容易把邏輯弄亂,增加理解難度,goto是可以實(shí)現(xiàn)無條件跳轉(zhuǎn)的,一旦跳轉(zhuǎn),就忽略很前面很多代碼,特別是在一些邏輯復(fù)雜的地方使用,會(huì)很容易出問題。所以goto能不用就不用,特別對(duì)于新手,盡量避諱。

優(yōu)點(diǎn):
方便處理異常情況,特別是內(nèi)存等系統(tǒng)資源的釋放。很多大型項(xiàng)目,開源項(xiàng)目,包括Linux內(nèi)核,都會(huì)使用goto來處理異常情況。
舉個(gè)例子,以下情況,大家第一反應(yīng)是沒有問題,其實(shí)是存在內(nèi)存泄漏隱患的。如果變量pdate2申請(qǐng)失敗,則退出函數(shù)。那么問題來了, pdate 申請(qǐng)成功了,但沒有得到釋放,出現(xiàn)了內(nèi)存泄漏。所以這種情況如果使用goto,就很容易解決問題。
int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) return -1;
char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) return -1;
free(pdate); free(pdate2); ......}

goto實(shí)現(xiàn)代碼

int module_init(){ char *pdate = (char *)malloc(100); if(pdate == NULL) goto err;
char *pdate2 = (char *)malloc(100); if(pdate2 == NULL) goto err;
free(pdate); free(pdate2); ......
err://統(tǒng)一的出錯(cuò)處理 if(pdate != NULL) free(pdate); if(pdate2!= NULL) free(pdate2);??return?-1;}
另一種寫法就是分階段處理:
 if(pdate == NULL)????goto?err1;????...??if(pdate2?==?NULL) goto err2; ...?err1:? free(pdate);?err2:? free(pdate2);??...


總結(jié):存在即合理,好壞取決于如何使用。


-END-


來源 | 二進(jìn)制人生

作者 |?二進(jìn)制人生


|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|

|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|


【1】干貨:嵌入式C語言源代碼優(yōu)化方案

【2】C語言內(nèi)存泄露很嚴(yán)重,如何應(yīng)對(duì)?

【3】C語言函數(shù)指針之回調(diào)函數(shù)

【4】光刻機(jī)原理解析——光刻機(jī)到底在“刻”什么?

【5】華為繼鴻蒙OS后,即將發(fā)布國產(chǎn)編程語言!



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉