如何在对其执行任何浮点运算之前检测无效的浮点数

时间:2017-04-13 23:55:00

标签: c++ gcc fpu

我有一个应用程序可以从文件中加载二进制float值。我发现该文件的“生产者”偶尔会将值放入其中,这些值不是有效的浮点位模式,特别是0x80426c51(可能还有其他模式)。当我执行此fread()此值时,该值成为浮点地址(已转换为void *)成功完成。但是,如果我尝试访问float来执行任何操作,则会发生异常。我甚至无法将float转换为double,因为它不是有效的float。我想我需要像fpclassify()这样的float。但我不知道这样的函数/宏是否存在。我的目标操作系统<math.h>甚至没有fpclassify()。我在具有core-i7指令集的“非主流”操作系统(不是Windows / Mac / Linux)上使用gcc版本4.8.1.9。虽然我使用的是C ++,但我没有使用任何标准模板库,也没有使用RTTI,因为这是一个嵌入式系统。

注意:在短期内,我修改了“生成器”程序,但我不喜欢这个作为长期解决方案,因为我可能无法控制最终的“生成器”程序。

0 个答案:

没有答案