c++ - goto的使用场景
PHP中文网
PHP中文网 2017-04-17 14:57:03
0
5
662
PHP中文网
PHP中文网

认证0级讲师

全部回覆(5)
洪涛

終於見到這個令人興奮的問題了. 專程為你寫了一篇博文.分享一下本人的goto歷程;
How to use goto?

PHPzhong

當效果大於可能的對結構的破壞時.(goto 本身無錯,不過人力有窮盡,大多時候添加goto反而會造成一些額外的麻煩)
個人學習中接觸到的goto也就用於跳出n層循環.

PHPzhong

盡量不要用goto…程式碼是給人看的,任何影響閱讀的程式碼都不要寫出來…

大家讲道理

看過的源碼裡比較愛用goto的是OpenSSL,因為是純C寫的,又有大量malloc出來的複雜資料結構,所以一個函數退出時必須要進行清理,而且就算是錯誤中斷了流程,也要清理,所以用了goto跳到清理的位置,確保函數只有一個出口。
C++因為有類別物件的析構函式可以執行清理,加上C++11加入的智慧型指標可以用來自動釋放new出來的東西,已經基本上不需要這樣。很多語言都保留了goto,但不建議用。
其實C/C++可以用這種方式代替goto:

do{
    if (...) 
        break;
} while(0);
cleanup();
阿神

C的話,函數內隨便用,沒啥的,C++的話不要用,有try catch等解決問題

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!