Почему обработчик std :: verminate не называется, если исключения отключены?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему обработчик std :: verminate не называется, если исключения отключены?

Сообщение Anonymous »

По умолчанию std :: urlinate_handler вызывает std :: abort . std :: verminate вызывается в случае нездорового исключения, или его можно назвать вручную. Я не вижу связи между обработчиком прекращения и исключениями, или почему это требуется. Обработчик прекращения говорит: «Делайте это перед тем, чтобы прервать». Вот вопрос, который я задавал ранее об этом со мной, и вот воспроизводимый пример, который я сделал, который показывает, что обработчик прекращения больше не называется, когда исключения отключены. Отключенные исключения (реализация MSVC) < /p>

Как оказалось, MSVC имеет фиктивную реализацию для функции завершения, когда макрос _has_exceptions не установлен: < /p>

Код: Выделить всё

    inline void __CRTDECL terminate() _NOEXCEPT
{   // handle exception termination
}
< /code>
< /blockquote>
Так что это просто так с MSVC, но это все еще в 2025 году? Что std :: verminate 
является просто пустой функцией, когда исключения отключены?

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-disabled
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»