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






