Поделиться через


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>

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

Пример

Пример см. в примере terminate.

См. также

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