所以VS 2015和2017都会发生这种情况。每次运行我的应用程序时,它都会在Floating-point inexact result
中的msvcrt.dll
异常中断,如果我点击Continue
,则异常一次又一次地出现。我从Exception Settings
取消选中它,但无论我尝试什么,我似乎都无法阻止它停止。
这就是我得到的:
启用或禁用Just My Code
似乎没有任何效果,此问题也出现在Visual Studio 2015中。
我该如何解决这个问题?
答案 0 :(得分:0)
This website状态:
默认情况下,运行时库会屏蔽所有浮点异常。
在我看来,您的代码通过使用属于一组名为_clearfp(...)
,_controlfp(...)
或_controlfp_s(...)
的一个或多个函数来更改此默认值。
该问题的解决方案是将中断异常掩码_MCW_EM设置为默认值。有关掩码常量和值的更多信息,请访问this website。
您可以使用以下代码将_MCW_EM设置为默认值:
//Read
unsigned int fp_control = 0;
_controlfp_s(&fp_control, 0, 0);
//Make changes
unsigned int new_fp_control = fp_control | _EM_INVALID | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_OVERFLOW | _EM_UNDERFLOW | _EM_INEXACT;
//Update
_controlfp_s(&fp_control, new_fp_control, _MCW_EM);
此代码应该可以解决问题。