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中文网其他相关文章!