在 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();
...
是否有更好或更多的 'canonical' 方法?
顺便说一句,我听说 goto
不好,所以我放弃了它:)
您可以使用 exit()
函数在 step1()
、step2()
期间的任何时候终止进程...实际上在任何地方。
使用
exit(1);
数字表示退出状态。 0 表示没有失败,所有大于 0 的都表示错误。
exit
会在任何地方终止程序,但在大多数情况下这是一个坏主意,检查函数的 return 值并处理(例如在你的情况下退出)是一种更简洁的方法(不需要全局变量)
一个选项是检查 step1()
函数的 return 值,如果它是错误的,例如使用 main
中的 return 1
。使用 main
中的 return
(带有适当的状态代码)来完成程序是 C++ 中的首选方法。
其他选项是exit
。关键是您可以在代码中的任何位置调用它。但是,在 C++ 中 exit
是 recommended that much. Regarding C, there is a question ,它讨论了在 C 中使用 exit
是否是一个好主意。
一般来说我有一些函数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();
...
是否有更好或更多的 'canonical' 方法?
顺便说一句,我听说 goto
不好,所以我放弃了它:)
您可以使用 exit()
函数在 step1()
、step2()
期间的任何时候终止进程...实际上在任何地方。
使用
exit(1);
数字表示退出状态。 0 表示没有失败,所有大于 0 的都表示错误。
exit
会在任何地方终止程序,但在大多数情况下这是一个坏主意,检查函数的 return 值并处理(例如在你的情况下退出)是一种更简洁的方法(不需要全局变量)
一个选项是检查 step1()
函数的 return 值,如果它是错误的,例如使用 main
中的 return 1
。使用 main
中的 return
(带有适当的状态代码)来完成程序是 C++ 中的首选方法。
其他选项是exit
。关键是您可以在代码中的任何位置调用它。但是,在 C++ 中 exit
是 exit
是否是一个好主意。