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


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 или EXE; даже при вызове set_terminate обработчик может быть заменен другим или можно заменить обработчик с помощью других DLL или EXE.

Эта функция не поддерживается в /clr:pure.

Требования

Подпрограмма

Обязательный заголовок

set_terminate

<eh.h>

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

Пример

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

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры обработки исключений

abort

_get_terminate

set_unexpected (CRT)

terminate (CRT)

unexpected (CRT)