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