HAS_SUBNORM 和 __STDC_IEC_559__ 是否相关?

问题描述

HAS_SUBnorM__STDC_IEC_559__ 是否依赖?例如:

  • 如果 __STDC_IEC_559__ 为 1,则 HAS_SUBnorM 为 1。
  • 如果 HAS_SUBnorM 为 0,则 __STDC_IEC_559__ 不是 1。

解决方法

HAS_SUBNORM__STDC_IEC_559__ 是否依赖?

我建议不要。
__STDC_IEC_559__ == 1xxx_HAS_SUBNORM != 1 可能。

C17 附录 F 指定了符合 __STDC_IEC_559__ 所需的内容:“定义 __STDC_IEC_559__ 的实现应符合本附件中的规范。”

附录 F 没有指定对次正规的支持,甚至在 2 个地方描述了函数:

... 当支持次正规结果时,返回值是精确的,与当前的舍入方向模式无关。 C17dr § F.10.7.2&3 2.

这至少意味着这些功能不需要低于正常的支持。另见@Ian Abbott


尼特:

__STDC_IEC_559__ 不是 1。”更像是“__STDC_IEC_559__ 未定义”,而不是“如果已定义且不是 1”。