通常说我有一些函数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()函数的返回值,如果它是错误的,只需在return 1中使用例如main。在C ++中,使用return中的main(带有适当的状态代码)完成程序是首选方法。

其他选项是exit。关键是您可以在代码中的任何位置调用它。但是,在C ++中,建议not很大。关于C,有一个问题here讨论在C中使用exit是否是一个好主意。

09-07 09:39