goto語(yǔ)句對(duì)與錯(cuò)
很容易把邏輯弄亂,增加理解難度,goto是可以實(shí)現(xiàn)無(wú)條件跳轉(zhuǎn)的,一旦跳轉(zhuǎn),就忽略很前面很多代碼,特別是在一些邏輯復(fù)雜的地方使用,會(huì)很容易出問(wèn)題。所以goto能不用就不用,特別對(duì)于新手,盡量避諱。
優(yōu)點(diǎn):
方便處理異常情況,特別是內(nèi)存等系統(tǒng)資源的釋放。很多大型項(xiàng)目,開(kāi)源項(xiàng)目,包括Linux內(nèi)核,都會(huì)使用goto來(lái)處理異常情況。
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-
來(lái)源 | 二進(jìn)制人生
作者 |?二進(jìn)制人生
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|
【1】干貨:嵌入式C語(yǔ)言源代碼優(yōu)化方案
【2】C語(yǔ)言?xún)?nèi)存泄露很?chē)?yán)重,如何應(yīng)對(duì)?
【3】C語(yǔ)言函數(shù)指針之回調(diào)函數(shù)
【4】光刻機(jī)原理解析——光刻機(jī)到底在“刻”什么?
【5】華為繼鴻蒙OS后,即將發(fā)布國(guó)產(chǎn)編程語(yǔ)言!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!






