繁体   English   中英

在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();
...

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

顺便说一句,我听说goto不好,所以我将其丢弃:)

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

其他选项是exit 关键是您可以在代码中的任何位置调用它。 但是,在C ++中建议exit那么多。 关于C,有一个问题在这里 ,其中讨论了是否使用exit在C是一个好主意或没有。

采用

exit(1);

数字表示退出状态。 0表示没有故障,大于0的所有值表示错误。

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

exit将使程序无论您身在何处都将终止,但是在大多数情况下,这是一个坏主意,检查函数的返回值并进行处理(例如,在您的情况下退出)是一种更干净的方法(不需要全局变量)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM