如何从另一个函数(C ++)中调用的函数结束程序

时间:2019-03-19 19:06:43

标签: c++ function exit

我有一个函数循环,就像下面写的代码一样,我希望在某个时候结束程序。问题是我不想使用退出函数,因为我也动态分配了数据。可以在每个函数中使用if并逐个退出,但我认为这会使代码更难理解,并且我有3个以上的函数。

void c()
{
     //code
     //I want to exit the program
}

void b()
{
     c();
     //code
}

void a()
{
     b();
     //code
}

int main()
{
     a();
     return 0;
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在需要动态分配的位置,函数内部使用std::unique_ptr

然后修改:

int main()
{
     try
     {
          a();
     }
     catch(...) 
     { /*... */} 
     return 0;
 }

然后在任何 deep 函数中,可以使用throw,而std::unique_ptr将自动神奇地释放资源。

答案 1 :(得分:0)

您可以从所有功能中return一直到main(最近)。

您可以调用exit的某些变体。

您可以引发异常。

您可以使用setjmp / longjmp跳到main的末尾(请不要)。

您可以使应用程序崩溃(通过调用abortraise(SIGKILL)或类似的方法)。

我想不出更多选择,但是可能会有一些...