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

问题描述 投票:0回答:4

一般说我有一些函数

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
不好,所以我放弃了它:)

c terminate
4个回答
8
投票

使用

exit(1);

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

cppreference.com 上的文档


6
投票

一种选择是检查

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

其他选项是

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


2
投票

您可以使用

exit()
函数在
step1()
step2()
...实际任何地方随时终止进程。


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.