一般来说我有一些函数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
不好,所以我放弃了它。)
答案 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
将从任何地方终止程序,但在大多数情况下,这是一个坏主意,检查函数的返回值和处理(例如在您的情况下退出)是一种更简洁的方法(不需要全局变量)