在 C 中尽早退出整个程序?

Quit the whole program early in C?

一般来说我有一些函数step1 step2 ...而且它们被依次调用:

int main()
{
  ...
  step1();  // something wrong detected and need to break out of the whole program
  step2();
  step3();
  ...
}

如何从 step1 跳出并跳过所有剩余代码以终止 main() 函数?

目前我只能想到设置一个像bool isErr这样的全局变量作为标志,这样

step1();  // error detected and isErr is set to 1 inside step1()
if (isErr)
  return;
step2();
...

是否有更好或更多的 'canonical' 方法?

顺便说一句,我听说 goto 不好,所以我放弃了它:)

您可以使用 exit() 函数在 step1()step2() 期间的任何时候终止进程...实际上在任何地方。

使用

exit(1);

数字表示退出状态。 0 表示没有失败,所有大于 0 的都表示错误。

exit 会在任何地方终止程序,但在大多数情况下这是一个坏主意,检查函数的 return 值并处理(例如在你的情况下退出)是一种更简洁的方法(不需要全局变量)

一个选项是检查 step1() 函数的 return 值,如果它是错误的,例如使用 main 中的 return 1。使用 main 中的 return(带有适当的状态代码)来完成程序是 C++ 中的首选方法。

其他选项是exit。关键是您可以在代码中的任何位置调用它。但是,在 C++ 中 exit recommended that much. Regarding C, there is a question ,它讨论了在 C 中使用 exit 是否是一个好主意。