C / C ++是否支持从子程序函数终止程序,即不是主程序? 到目前为止,我只发现退出和中止允许用户终止当前的功能或进程。 如果我不是主要功能,有没有办法终止整个程序?
答案 0 :(得分:4)
如果您不在main()
以及其他功能,那么您也可以致电exit()
或abort()
它将终止您的整个过程。
exit()
需要清理abort()
无法执行的操作。
答案 1 :(得分:1)
答案 2 :(得分:1)
因为您在谈论C ++,请考虑 std::terminate
你现在,因为“C / C ++是否支持从子程序函数终止程序,而不是主程序?”
默认情况下std::terminate
调用abort
,但这可以通过std::set_terminate
安装处理程序进行配置
答案 3 :(得分:0)
void exit(int status)
上述方法正常终止进程,执行常规清理以终止程序。
正常程序终止执行以下操作(按相同顺序):
与具有线程存储持续时间的当前线程关联的对象将被销毁(仅限C ++ 11)。
销毁具有静态存储持续时间的对象(C ++),并调用使用atexit注册的函数。
关闭所有C流(使用函数打开)(并刷新,如果已缓冲),并删除使用tmpfile创建的所有文件。
之后,Control将返回主机环境。
因为它终止了调用进程,因为你的函数是同一个进程的一部分,所以在那里使用exit()将终止程序。
答案 4 :(得分:-2)
只有从main函数调用该函数才能实现。从您想要终止程序的函数返回一个终止程序的值,例如-1。
示例:
void main()
{
//Call to a function
int i = functionFromMain();
if(i == -1)
{
//Terminate Program
}
}