首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么定义__STDC_IEC_559__ (to 1)不需要符合IEC 60559的实现?

为什么定义__STDC_IEC_559__ (to 1)不需要符合IEC 60559的实现?
EN

Stack Overflow用户
提问于 2022-05-06 15:08:05
回答 1查看 81关注 0票数 -4

C (C99+)标准要求(尽管是隐式的)一个一致性实现将__STDC__定义为1。

但是,C标准不需要IEC 60559一致性实现来定义__STDC_IEC_559__ (to 1)。

后果:

代码语言:javascript
复制
#if __STDC__ != 1
/* non-conforming implementation */
#endif

#if __STDC_IEC_559__ != 1
/* may be IEC 60559 conformant implementation */
#endif

在这里,我们看到这些宏的语义没有一致性。知道为什么吗?这是一个可能的缺陷吗?

为什么C标准不要求IEC 60559一致性实现来定义__STDC_IEC_559__ (to 1)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-09 10:53:23

定义它符合实现本身的最佳利益。C17 6.10.8.3:

__STDC_IEC_559__整数常量1,用于表示符合附件F中的规范(IEC 60559浮点算法)。

虽然从技术上讲,编译器可能不定义它,但如果它确实符合IEC 60559,则没有任何意义。这是一个质量的实现邮票,就像__STDC____STDC_VERSION__一样。

值得注意的是,这个常量仅在C99之后才出现,所以C90实现可能使用IEC 60559而不定义宏常量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72143685

复制
相关文章

相似问题

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