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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.