Goto 在C 或C 語言中的良好使用
儘管人們經常認為goto 普遍有害,但在某些情況下使用可以帶來明顯的好處。
清潔塊
一個這樣的情況是建立清理區塊,這是C 中常用的一種模式,用於確保在發生錯誤時正確的資源釋放。使用 goto,我們可以實作一個清理區塊,如下所示:
void foo() { if (!doA()) goto exit; if (!doB()) goto cleanupA; if (!doC()) goto cleanupB; /* everything has succeeded */ return; cleanupB: undoB(); cleanupA: undoA(); exit: return; }
此程式碼允許清晰有效地處理錯誤情況。如果 doB() 或 doC() 發生錯誤,則會呼叫適當的清理函數,然後執行到退出標籤以從函數傳回。
特定無條件分支
Goto 在執行特定的無條件分支時也很有用。例如,以下程式碼使用goto 模擬無限循環:
infinite_loop: // code goes here goto infinite_loop;
這種方法比使用具有退化條件的while 循環更加具體和自記錄,因為它清楚地表明了繼續循環的意圖.
注意事項
需要注意的是,不應該使用goto不加區別地。如果不明智地使用,它很容易導致意大利麵條式代碼。然而,如果使用得當,它可以提供一個有價值的工具來創建高效且可讀的程式碼。
以上是什麼時候在 C 或 C 中使用 `goto` 是可以接受的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!