Почему обработчик 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

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