我有一个应用程序可以从文件中加载二进制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,因为这是一个嵌入式系统。
注意:在短期内,我修改了“生成器”程序,但我不喜欢这个作为长期解决方案,因为我可能无法控制最终的“生成器”程序。