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