C 和C 語言中有益的Goto 實作範例
儘管goto 語句遭到廣泛反對,但在某些情況下可以有效地使用它。這個主題探討了這類案例,其靈感來自於一個最初被視為笑話的被投票答案。
案例研究:無限循環
以下示例演示了一個特定且記錄在案的示例使用goto:
infinite_loop: // code goes here goto infinite_loop;
由於其清晰性和特異性,此循環優於替代循環。 Goto 代表無條件分支,而其替代方案依賴具有條件分支和退化始終為真的條件的結構。此外,標籤記錄了意圖,無需額外註釋。
案例研究:C 中的清理
在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; }
這種方法允許簡潔且結構化的錯誤處理。每個潛在的錯誤情況都透過 goto 語句進行處理,該語句分支到適當的清理程式碼。 C 中的 RAII 提供了一種更慣用的方法來處理此類情況。
評估標準
為了確保公平評估,建立了以下標準:
以上是什麼時候 `goto` 在 C 和 C 語言中真正有用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!