C/C++ 是否支持从子例程函数(即不是主函数)终止程序?到目前为止,我只发现 exit 和 abort 允许用户终止当前函数或进程。如果我不在主函数中,有没有办法终止整个程序?
问问题
4774 次
5 回答
5
如果您不在main()
其他功能中,那么您也可以调用exit()
,否则abort()
它将终止您的整个过程。
哪里exit()
需要清理哪里不需要清理abort()
。
于 2013-04-08T04:29:10.960 回答
1
于 2013-04-08T04:27:51.663 回答
1
既然您在谈论 C++,请考虑std::terminate
u 现在,“C/C++ 是否支持从子程序函数终止程序,即不是主程序?”
默认情况下std::terminate
调用abort
,但这可以通过安装处理程序来配置std::set_terminate
于 2013-04-08T04:40:14.193 回答
0
无效退出(int状态)
上述方法正常终止进程,执行定期清理以终止程序。
正常程序终止执行以下操作(以相同的顺序):
与具有线程存储持续时间的当前线程关联的对象被销毁(仅限 C++11)。
具有静态存储持续时间的对象将被销毁 (C++),并调用使用 atexit 注册的函数。
所有 C 流(使用 in 中的函数打开)都被关闭(如果被缓冲,则被刷新),并且所有使用 tmpfile 创建的文件都被删除。
之后,控制返回到主机环境。
当它终止调用进程时,因为您的函数是同一进程的一部分,因此在其中使用 exit() 将终止程序。
于 2013-04-08T04:43:58.333 回答
-2
只有从主函数调用该函数才有可能。并且从您要终止程序的那个函数返回一个用于终止程序的值,例如 -1。
例子:
void main()
{
//Call to a function
int i = functionFromMain();
if(i == -1)
{
//Terminate Program
}
}
于 2013-04-08T04:31:40.173 回答