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

How to end the program from a function which is called in another function (C++)

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

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

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

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

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

感谢您的帮助。

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

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

你可以抛出异常。

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

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

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

在您的函数内部使用 std::unique_ptr 任何需要动态分配的地方。

然后修改:

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

然后在任何deep函数里面,可以使用throwstd::unique_ptr会自动释放资源