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






