Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устанавливает вашу собственную подпрограмму завершения, чтобы ее можно было вызвать с помощью функции 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