我有一个函数循环,就像下面写的代码一样,我希望在某个时候结束程序。问题是我不想使用退出函数,因为我也动态分配了数据。可以在每个函数中使用if并逐个退出,但我认为这会使代码更难理解,并且我有3个以上的函数。
void c()
{
//code
//I want to exit the program
}
void b()
{
c();
//code
}
void a()
{
b();
//code
}
int main()
{
a();
return 0;
}
感谢您的帮助。
答案 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
的末尾(请不要)。
您可以使应用程序崩溃(通过调用abort
,raise(SIGKILL)
或类似的方法)。
我想不出更多选择,但是可能会有一些...