set_terminate (CRT)

Устанавливает вашу собственную подпрограмму завершения, чтобы ее можно было вызвать с помощью функции terminate.

Синтаксис

terminate_function set_terminate( terminate_function termFunction );

Параметры

termFunction
Указатель на пользовательскую функцию завершения.

Возвращаемое значение

Возвращает указатель на предыдущую функцию, зарегистрированную с помощью функции set_terminate, чтобы предыдущую функцию можно было впоследствии восстановить. Если предыдущая функция не была задана, возвращаемое значение можно использовать для восстановления поведения по умолчанию; Это значение может иметь значение NULL.

Комментарии

Функция set_terminate устанавливает termFunction как функцию, вызываемую функцией terminate. Функция set_terminate используется с обработкой исключений C++ и может быть вызвана в программе в любой момент до возникновения исключения. По умолчанию terminate вызывает функцию abort. Это поведение по умолчанию можно изменить, создав собственную функцию завершения и вызвав функцию set_terminate с именем этой функции в качестве аргумента. terminate вызывает последнюю функцию, заданную в качестве аргумента для функции set_terminate. После выполнения любых необходимых задач termFunction очистки следует выйти из программы. Если он не завершает работу (если он возвращается к вызывающему объекту), abort вызывается .

В многопоточной среде функции завершения поддерживаются отдельно для каждого потока. Каждый новый поток требует установки собственной функции завершения. Таким образом, каждый поток отвечает за собственную обработку завершения.

Тип terminate_function определен в файле EH.H как указатель на определенную пользователем функцию завершения, termFunction, возвращающую значение void. Пользовательская функция termFunction не может принимать аргументы и не должна возвращаться к вызывающей функции. В противном случае вызывается функция abort. Создание исключения из функции termFunction невозможно.

typedef void ( *terminate_function )( );

Примечание

Функция set_terminate работает только вне отладчика.

Существует один set_terminate обработчик для всех динамически связанных библиотек DLL или EXEs; даже если вы вызываете set_terminate обработчик, его можно заменить другим, или вы можете заменить обработчик, заданный другой библиотекой DLL или EXE.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см. статью Глобальное состояние в CRT.

Требования

Подпрограмма Обязательный заголовок
set_terminate <eh.h>

Дополнительные сведения о совместимости см. в разделе Compatibility.

Пример

См. пример для terminate.

См. также раздел

Процедуры обработки исключений
abort
_get_terminate
set_unexpected
terminate
unexpected