首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我能让gcc在运行时告诉我计算结果是NaN还是inf吗?

我能让gcc在运行时告诉我计算结果是NaN还是inf吗?
EN

Stack Overflow用户
提问于 2010-05-31 13:56:57
回答 1查看 6.3K关注 0票数 19

有没有一种方法可以告诉gcc抛出一个SIGFPE或类似的东西,以响应在运行时产生NaN(-)inf的计算,就像被零除一样?

我已经尝试了-fsignaling-nans标志,但似乎没有什么帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-07 21:58:33

在MinGW 4.8.1 (Win32的GCC)上,我看到feenableexcept没有定义。解决方法是使用Win32平台的_controlfp,如下所示:

代码语言:javascript
复制
#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
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2941611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档