如何退出函数而不是从main()

时间:2013-04-08 04:24:13

标签: c++ c function

C / C ++是否支持从子程序函数终止程序,即不是主程序? 到目前为止,我只发现退出和中止允许用户终止当前的功能或进程。 如果我不是主要功能,有没有办法终止整个程序?

5 个答案:

答案 0 :(得分:4)

如果您不在main()以及其他功能,那么您也可以致电exit()abort()它将终止您的整个过程。

exit()需要清理abort()无法执行的操作。

答案 1 :(得分:1)

exit(0) or exit(1)

如果是0EXIT_SUCCESS,则表示成功。 如果是EXIT_FAILURE,则表示失败。

参考:See here

答案 2 :(得分:1)

因为您在谈论C ++,请考虑 std::terminate

你现在,因为“C / C ++是否支持从子程序函数终止程序,而不是主程序?”

默认情况下std::terminate调用abort,但这可以通过std::set_terminate安装处理程序进行配置

答案 3 :(得分:0)

void exit(int status)

上述方法正常终止进程,执行常规清理以终止程序。

正常程序终止执行以下操作(按相同顺序):

  1. 与具有线程存储持续时间的当前线程关联的对象将被销毁(仅限C ++ 11)。

  2. 销毁具有静态存储持续时间的对象(C ++),并调用使用atexit注册的函数。

  3. 关闭所有C流(使用函数打开)(并刷新,如果已缓冲),并删除使用tmpfile创建的所有文件。

  4. 之后,Control将返回主机环境。

    因为它终止了调用进程,因为你的函数是同一个进程的一部分,所以在那里使用exit()将终止程序。

答案 4 :(得分:-2)

只有从main函数调用该函数才能实现。从您想要终止程序的函数返回一个终止程序的值,例如-1。

示例:

void main()
{
    //Call to a function
    int i = functionFromMain();
    if(i == -1)
    {
        //Terminate Program
    }
}