首頁 >後端開發 >C++ >什麼時候在 C 或 C 中使用 `goto` 是可以接受的?

什麼時候在 C 或 C 中使用 `goto` 是可以接受的?

DDD
DDD原創
2024-12-15 03:46:14748瀏覽

When is Using `goto` in C or C   Acceptable?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn