C++ stdlib 中使用哪个函数退出程序执行并带有状态代码?
在Java中,有:
System.exit(0)
假设你只有一个线程:
#include <iostream>
int main()
{
std::cout << "Hello, World!n";
return(0);
// PROGRAM ENDS HERE.
std::cout << "You should not see this.n";
return(0);
}
输出:
Hello, World!
return(0);
可以放置在您喜欢的任何位置 - 它将结束int main()
,因此您的程序。
或者,您可以从任何您喜欢的地方拨打exit(EXIT_SUCCESS);
或exit(EXIT_FAILURE);
:
/* exit example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
FILE * pFile;
pFile = fopen("myfile.txt", "r");
if(pFile == NULL)
{
printf("Error opening file");
exit (1);
}
else
{
/* file operations here */
}
return 0;
}
除了其他响应之外,您还可以调用中止、终止quick_exit(退出而不调用析构函数、解除分配等;因此得名)
默认情况下,终止调用中止,但可以调用您设置的任何终止处理程序。
中止和set_terminate的示例用法(用于终止使用的处理程序),可以调用quick_exit(请参阅示例#2)
// set_terminate example
#include <iostream> // std::cerr
#include <exception> // std::set_terminate
#include <cstdlib> // std::abort
void myterminate () {
std::cerr << "terminate handler calledn";
abort(); // forces abnormal termination
}
int main (void) {
std::set_terminate (myterminate);
throw 0; // unhandled exception: calls terminate handler
return 0;
}
quick_exit/at_quick_exit示例:
/* at_quick_exit example */
#include <stdio.h> /* puts */
#include <stdlib.h> /* at_quick_exit, quick_exit, EXIT_SUCCESS */
void fnQExit (void)
{
puts ("Quick exit function.");
}
int main ()
{
at_quick_exit (fnQExit);
puts ("Main function: Beginning");
quick_exit (EXIT_SUCCESS);
puts ("Main function: End"); // never executed
return 0;
}
我不完全确定为什么有人会称quick_exit但它存在,因此我应该为它提供文档(由 http://www.cplusplus.com/reference 提供)
此外,人们可以将at_exit称为等同于at_quick_exit。
诚然,我对set_terminate和终止不是那么熟悉,因为我自己不称呼它们,但我想如果你愿意,你可以使用 quick_exit 作为终止处理程序;或者一个自定义的(但请不要引用我的话)。
在C++中,你可以使用 exit(0)例如:
switch(option){
case 1:
//statement
break;
case 2:
//statement
exit(0);