std :: terminate с отключенными исключениями (реализация MSVC) - PullRequest
0 голосов
/ 30 июня 2018

Вызывая std::terminate() из кода, скомпилированного с отключенными исключениями, я заметил, что поведение отличается для gcc и msvc. В первом случае программа была прервана, как я и ожидал, тогда как во втором случае ничего не произошло (программа продолжила выполнение).

Как оказалось, msvc имеет фиктивную реализацию для функции завершения, когда макрос _HAS_EXCEPTIONS не установлен:

inline void __CRTDECL terminate() _NOEXCEPT
{   // handle exception termination
}

Visual Studio 2017, версия 15.7.2

cppreference говорит:

std :: terminate () также может быть вызван непосредственно из программы.

Не означает ли это, что прерывание / обработчик должен вызываться в любом случае, независимо от способности исключений?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...