你能解释一下:
terminate_handler set_terminate(terminate_handler f)throw();
和此:
unexpected_handler set_unexpected(unexpected_handler f)throw();
要更改我们使用的终止处理程序,必须使用set_terminate()
,如上所示,但我无法理解/解释上述形式。谁能解释一下呢。
我也很难理解这一点:
terminate_handler set_terminate(terminate_handler f)throw();
下面, f是指向新终止处理程序的指针。该函数 返回指向旧的终止处理程序的指针。新的终止 handler必须是terminate_handler类型,其定义如下:
typedef void(* terminate_handler)();
答案 0 :(得分:4)
terminate_handler
是函数指针的typedef。设置终止处理程序时,将指针传递给要在终止时调用的函数。这是set_terminate
的论据。该函数返回旧指针。这样,如果您只想在短时间内使用自己的终止处理程序,则可以在完成后恢复上一个处理程序:
void my_terminator() {
// whatever
}
int main() {
// terminate here calls default handler
terminate_handler old_handler = set_terminate(my_terminator);
// now, terminate will call `my_terminator`
set_terminate(old_handler);
// now, terminate will call the default handler
return 0;
}