设置终止和意外处理程序



你能解释一下吗:

terminate_handler set_terminate (terminate_handler f) 投掷();

而这个:

unexpected_handler set_unexpected (unexpected_handler f) 投掷();

要更改我们使用的终止处理程序,必须使用set_terminate(),如上所示,但我无法理解/解释上述形式。谁能解释一下。

我也很难理解这一点:

terminate_handler set_terminate (terminate_handler f) 投掷();

这里f 是指向新终止处理程序的指针。函数返回指向旧终止处理程序的指针。新终止处理程序的类型必须是 terminate_handler,其定义如下:

typedef void(*terminate_handler)();

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;
}

最新更新