喜的=) 我有一点点好奇心 如果我下面的函数,即关闭程序调用sys.exit:追赶sys.exit
void stop(int state){
std::exit(state);
}
现在,我要打电话此功能,但不退出程序。 所以,我想“抓住”std :: exit命令......有没有一种方法可以做到这一点?
喜的=) 我有一点点好奇心 如果我下面的函数,即关闭程序调用sys.exit:追赶sys.exit
void stop(int state){
std::exit(state);
}
现在,我要打电话此功能,但不退出程序。 所以,我想“抓住”std :: exit命令......有没有一种方法可以做到这一点?
做同样与尾递归:有问题的函数调用总是在执行路径的最后一条语句,或者根本不发生:
void stop(int state)
{
const bool exitReally = DecideWhetherToExit();
if (exitReally)
std::exit(state);
}
此功能不会做任何后调用std::exit
,但也可能根本不会调用它,例如,在对另一个函数中的任何内容进行评估后决定。
你不能这样做,因为exit
保证永不返回。因此,编译器可以利用此优势并生成exit
之后没有任何执行路径的代码。如果exit
返回一些hackery,你会得到未定义的行为。所以这没有标准的方法。
据我所知,你不能调用exit
,然后进一步阻止应用程序终止。
你不能只传递另一个参数到stop
,以便它不会调用exit
?
E.g.
void stop(int state, bool exit) { if(exit) std::exit(state); }
“捕捉”是什么意思?这不是一个例外。如果你想添加一些防止调用退出的代码,你不能以某种方式包装它吗? – x13n 2010-12-10 10:31:03