在C早期退出整个程序?

时间:2015-09-26 13:01:19

标签: c terminate

一般来说我有一些函数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();
...

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

BTW我听说goto不好,所以我放弃了它。)

4 个答案:

答案 0 :(得分:3)

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

其他选项是exit。关键是你可以在代码中的任何地方调用它。但是,在C ++中,exit not推荐了很多。关于C,有一个问题here讨论了在C中使用exit是否是个好主意。

答案 1 :(得分:2)

使用

exit(1);

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

答案 2 :(得分:1)

您可以使用exit()功能在step1()step2() ...实际任何地点随时终止流程。

答案 3 :(得分:0)

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