【发布时间】:2020-11-19 07:11:37
【问题描述】:
我正在寻找一种方法来检测 C 编译器是否在编译时使用 IEEE-754 浮点表示,最好是在预处理器中,但常量表达式也可以。
请注意,__STDC_IEC_559__ 宏不适合此目的,因为实现可能使用正确的表示,但不完全支持附件 F。
【问题讨论】:
-
编译器本身很可能会“使用”底层硬件使用的任何格式。
-
@Someprogrammerdude 我认为他的意思是“实现”,是硬件、编译器、库等的组合。
-
__STDC_IEC_559__的一个常见问题是它“应实现浮点类型(OP 想要的 - 很容易遵守)和符合 IEC 60559 的算术(困难部分)”。 “符合 IEC 60559 的算术”是一项艰巨的测试,更不用说通过了。一些高度兼容的编译器将其保留为未定义,而不是冒险错过极端情况。
标签: c ieee-754 compile-time