|
|
Иногда от предусмотренной обработки особых ситуаций приходится переходить к более грубым приемам, например:
В этих случаях вызывается функция
void terminate();
Она в свою очередь вызывает функцию, которая была указана как параметр при последнем обращении к set_terminate():
typedef void(*PFV)(); PFV set_terminate(PFV);
Функция, которая была задана в предыдущем вызове set_terminate(),
будет возвращаемым значением текущего вызова. Это помогает
пользователю реализовать алгоритм восстановления стека. По умолчанию
функция terminate() вызывает abort().
Выбор с помощью terminate() такой функции, которая вместо
действительного завершения программы, пытается вернуться в
вызвавшую программу, является ошибкой.
| |