Заставьте весь QNaN вместо этого быть обычным NaN (SNaN), чтобы генерировались исключения
Я настроил Visual Studio для выдачи исключений с плавающей запятой через функцию _controlfp. Это работает для NAN и INF, но не для QNAN. Т.е. тихие NaN не вызывают исключение. Есть ли какая-либо функция или опция конфигурации для Visual Studio 2008/2010, которая заставит QNAN вместо этого быть NAN, чтобы они генерировали исключения?
1 ответ
Несколько полезных советов, хотя я никогда даже не делал что-то вроде этого:
Читайте: http://www.cisl.ucar.edu/docs/trap.error/errortypes.html
Получившийся в результате поиск в Интернете (на который я действительно потратил всего около 30 секунд), наводит меня на мысль, что это обычно разрешается с опцией компилятора.
Однако я также напоминаю, что такое включение / отключение ловушек может быть задано программно, особенно в окнах, это может быть сделано практически любой программой, например, когда принтер используется для печати. Кроме того, если вы измените эту опцию программно, как можно скорее установите для нее прежнее значение, иначе, если люди из.NET попытаются использовать ваш код, у них могут возникнуть проблемы.
(Другими словами, использование _controlfp может быть переопределено другой подпрограммой, если предположить, что это действительно правильный подход)
Также см. Visual Studio C++ 2008 / 2010 - перерыв на плавание NaN