有没有一种方法可以告诉gcc抛出一个SIGFPE或类似的东西,以响应在运行时产生NaN
或(-)inf
的计算,就像被零除一样?
我已经尝试了-fsignaling-nans
标志,但似乎没有什么帮助。
发布于 2014-01-07 21:58:33
在MinGW 4.8.1 (Win32的GCC)上,我看到feenableexcept
没有定义。解决方法是使用Win32平台的_controlfp
,如下所示:
#undef __STRICT_ANSI__ // _controlfp is a non-standard function documented in MSDN
#include <float.h>
#include <stdio.h>
int main()
{
_clearfp();
unsigned unused_current_word = 0;
// clearing the bits unmasks (throws) the exception
_controlfp_s(&unused_current_word, 0, _EM_OVERFLOW | _EM_ZERODIVIDE); // _controlfp_s is the secure version of _controlfp
float num = 1.0f, den = 0.0f;
float quo = num / den;
printf("%.8f\n", quo); // the control should never reach here, due to the exception thrown above
}
https://stackoverflow.com/questions/2941611
复制相似问题