首頁  >  問答  >  主體

c++ - goto的使用场景

PHP中文网PHP中文网2715 天前627

全部回覆(5)我來回復

  • PHP中文网

    PHP中文网2017-04-17 14:59:03

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

    回覆
    0
  • PHPz

    PHPz2017-04-17 14:59:03

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

    回覆
    0
  • PHPz

    PHPz2017-04-17 14:59:03

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:59:03

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

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

    回覆
    0
  • 阿神

    阿神2017-04-17 14:59:03

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

    回覆
    0
  • 取消回覆