提前退出 C 语言的整个程序?

mzo*_*zoz 4 c terminate

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

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

我怎样才能摆脱step1并跳过所有其余代码来终止main()函数?

目前我只能想到设置一个全局变量,比如bool isErr一个标志,这样

step1();  // error detected and isErr is set to 1 inside step1()
if (isErr)
  return;
step2();
...
Run Code Online (Sandbox Code Playgroud)

是否有更好或更“规范”的方法?

顺便说一句,我听说这goto很糟糕,所以我放弃了它:)

usr*_*567 7

使用

exit(1);
Run Code Online (Sandbox Code Playgroud)

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

  • C 中唯一可移植的返回值是“EXIT_SUCCESS”和“EXIT_FAILURE”(但不是“1”)。 (2认同)

gio*_*gim 5

一种选择是检查step1()函数的返回值,如果错误,只需使用例如return 1in main。使用return(带有适当的状态代码) frommain来完成程序是 C++ 中的首选方式。

其他选项是exit. 关键是您可以在代码中的任何位置调用它。然而,在 C++ 中exit并不推荐那么多。关于C,这里有一个问题讨论exit在C中使用是否是一个好主意。