【发布时间】:2017-01-04 16:37:31
【问题描述】:
我想了解更多关于 C 的知识,而不是通过一本关于 C 的书的形式重新讨论,我想阅读“编译器实际实现的标准”。这似乎是 ISO/IEC 9899:2011 文件,目前可在其网站上以 198 瑞士法郎的价格获得。
这让我很困扰,因为经过快速搜索后,我意识到“C11”标准似乎并未公开。 Open-std.org 仅将 this document 列为“......反映了发布时将成为标准的内容。”,但不是实际标准。
现在我的问题:
- 开源编译器(尤其是 clang 和 gcc)究竟实现了哪个标准?
- 我在哪里可以找到这个标准?
如果开源编译器实现了不公开的标准:
- 究竟为什么开源编译器要实现非公共标准?这是否不会极大地阻止人们贡献代码或完全理解代码,我认为这是开源的目的。考虑到所有时间都花在编码上然后分发代码,当然可以花一些时间来编写标准而不是代码。
【问题讨论】:
-
他们的标准委员会不得不为标准收费,因为标准化是如何运作的。他们正在努力使实际标准免费而不是收费。也就是说,您可以通过在标准发布之前发布的草案。这在 99.9% 的情况下都是正确的。此外,如果您真的想了解细节,为标准付费并不是什么大不了的事。这是一本好教科书的成本。
-
这一半是骗人的,一半是缺乏阅读编译器文档的,一半是关于如何一切都应该不花钱消费的离题咆哮。是的,三分之二:D
-
@DimBimJim 我怀疑任何编译器都 100% 符合标准,但他们试图做到。至于实施什么标准,它实际上是多重的。它由
-std=c99或-std=c11等编译器标志控制,因此您可以在同一编译器上将相同的代码编译为不同的标准。 -
@KarolyHorvath,谢谢你给我谷歌搜索,我显然猜对了文件的价格。