9

我已将 Visual Studio 配置为通过 _controlfp 函数引发浮点异常。这适用于 NAN 和 INF,但不适用于 QNAN。即安静的 NaN 不会引发异常。Visual Studio 2008/2010 是否有任何功能或配置选项会强制 QNAN 改为 NAN,从而引发异常?

4

1 回答 1

1

一些有用的提示,虽然我从来没有远程做过这样的事情:

阅读:http ://www.cisl.ucar.edu/docs/trap.error/errortypes.html

互联网上的搜索结果(我实际上只花了大约 30 秒)让我相信这通常是通过编译器选项启用的。

但是,我似乎还记得可以通过编程方式指定这种启用/禁用陷阱,尤其是在 Windows 中,这可以通过几乎任何程序来完成,例如当打印机用于打印时。此外,如果您以编程方式更改此选项,请尽快将其设置回以前的值,否则如果来自 .NET 的人尝试使用您的代码,他们可能会遇到问题。

(换句话说,您对 _controlfp 的使用可能会被其他一些例程覆盖,假设这确实是正确的使用方法)

另请参阅Visual Studio C++ 2008 / 2010 - 浮点 NaN 中断

于 2010-12-16T02:02:16.910 回答