在哪里可以找到当前的 C 或 C++ 标准文档? [英] Where do I find the current C or C++ standard documents?

查看:43
本文介绍了在哪里可以找到当前的 C 或 C++ 标准文档?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于许多问题,答案似乎都在标准"中.然而,我们从哪里找到呢?最好是在线的.

谷歌搜索有时会让人感到徒劳,尤其是对于 C 标准,因为它们淹没在编程论坛上的大量讨论中.

首先,因为这些是我现在正在搜索的,所以哪里有好的在线资源:

  • C89
  • C99
  • C11
  • C++98
  • C++03
  • C++11
  • C++14
  • C++17

解决方案

PDF 版本标准

截至 2014 年 9 月 1 日 2021 年 9 月,PDF 格式的官方 C 和 C++ 标准文档的最佳价格位置似乎是:

标准的非 PDF 电子版本

标准的印刷版本

标准的印刷副本可从国家标准机构和 ISO 获得,但非常昂贵.>

如果您想要一份 C90 标准的硬拷贝,但价格比上面少得多,您可以找到一份便宜的 Herb Schildt 的书 带注释的 ANSI 标准 Amazon,其中包含标准的实际文本(有用)和对标准的评论(不太有用 - 它包含几个危险和误导性的错误).

C99 和 C++03 标准可从 Wiley 和 BSI(英国标准协会)获得书籍形式:

标准委员会草案版本(免费)

未来标准的工作草案通常可从委员会网站获得:

如果您想从当前或更早的 C/C++ 标准中获取草稿,可以在互联网上免费获得一些草稿:

对于 C:

对于 C++:

请注意,这些文件与标准不同,尽管会议之前决定标准的版本通常与最终标准中的版本非常接近.FCD(最终委员会草案)版本受密码保护;您需要加入标准委员会才能获得它们.

尽管草案版本可能与标准的最终批准版本非常接近,但本文的一些编辑强烈建议您获取实际文档的副本 - 特别是如果您打算引用它们作为参考.当然,如果手头拮据,饥饿的学生应该继续使用汇票.


看来,如果您愿意并能够在标准批准后等待几个月,搜索INCITS/ISO/IEC"而不是ISO/IEC"当寻找标准是关键.通过这样做,本文的一位编辑能够以合理的价格找到 C11 和 C++11 标准.例如,如果您搜索INCITS/ISO/IEC 9899:2011"而不是ISO/IEC 9899:2011"在 webstore.ansi.org 上,您会找到价格合理的 PDF 版本.


站点 https://wg21.link/ 提供了指向 C++ 当前工作草案的短 URL 链接和标准草案和委员会文件:


该标准的当前草案在 Github 上作为 LaTeX 源进行维护.这些来源可以使用 cxxdraft-htmlgen 转换为 HTML.以下站点维护如此生成的 HTML 页面:

Tim Song 还维护生成的 HTML 和 PDF 版本的网络 TS 和范围 TS.

POSIX 对 C 标准的扩展

POSIX 标准 (IEEE 1003.1) 要求兼容的操作系统包含 C 编译器.该编译器又必须符合 C 标准,并且还必须支持系统接口"中定义的各种扩展.POSIX 的部分(例如 off_t 数据类型、 标头、clock_gettime() 函数和 _POSIX_C_SOURCE 宏.)

因此,如果您尝试查找特定函数,被告知该函数是 POSIX 的一部分,而不是 C 标准",并且想知道为什么操作系统标准强制要求编译器功能和语言扩展...现在你知道了!

For many questions the answer seems to be found in "the standard". However, where do we find that? Preferably online.

Googling can sometimes feel futile, again especially for the C standards, since they are drowned in the flood of discussions on programming forums.

To get this started, since these are the ones I am searching for right now, where are there good online resources for:

  • C89
  • C99
  • C11
  • C++98
  • C++03
  • C++11
  • C++14
  • C++17

解决方案

PDF versions of the standard

As of 1st September 2014 September 2021, the best locations by price for the official C and C++ standards documents in PDF seem to be:

Non-PDF electronic versions of the standard

Print versions of the standard

Print copies of the standards are available from national standards bodies and ISO but are very expensive.

If you want a hardcopy of the C90 standard for much less money than above, you may be able to find a cheap used copy of Herb Schildt's book The Annotated ANSI Standard at Amazon, which contains the actual text of the standard (useful) and commentary on the standard (less useful - it contains several dangerous and misleading errors).

The C99 and C++03 standards are available in book form from Wiley and the BSI (British Standards Institute):

Standards committee draft versions (free)

The working drafts for future standards are often available from the committee websites:

If you want to get drafts from the current or earlier C/C++ standards, there are some available for free on the internet:

For C:

For C++:

Note that these documents are not the same as the standard, though the versions just prior to the meetings that decide on a standard are usually very close to what is in the final standard. The FCD (Final Committee Draft) versions are password protected; you need to be on the standards committee to get them.

Even though the draft versions might be very close to the final ratified versions of the standards, some of this post's editors would strongly advise you to get a copy of the actual documents — especially if you're planning on quoting them as references. Of course, starving students should go ahead and use the drafts if strapped for cash.


It appears that, if you are willing and able to wait a few months after ratification of a standard, to search for "INCITS/ISO/IEC" instead of "ISO/IEC" when looking for a standard is the key. By doing so, one of this post's editors was able to find the C11 and C++11 standards at reasonable prices. For example, if you search for "INCITS/ISO/IEC 9899:2011" instead of "ISO/IEC 9899:2011" on webstore.ansi.org you will find the reasonably priced PDF version.


The site https://wg21.link/ provides short-URL links to the C++ current working draft and draft standards, and committee papers:


The current draft of the standard is maintained as LaTeX sources on Github. These sources can be converted to HTML using cxxdraft-htmlgen. The following sites maintain HTML pages so generated:

Tim Song also maintains generated HTML and PDF versions of the Networking TS and Ranges TS.

POSIX extensions to the C standard

The POSIX standard (IEEE 1003.1) requires a compliant operating system to include a C compiler. This compiler must in turn be compliant with the C standard, and must also support various extensions defined in the "System Interfaces" section of POSIX (such as the off_t data type, the <aio.h> header, the clock_gettime() function and the _POSIX_C_SOURCE macro.)

So if you've tried to look up a particular function, been informed "This function is part of POSIX, not the C standard", and wondered why an operating system standard was mandating compiler features and language extensions... now you know!

  • There is a draft version of POSIX.1-2008 at http://www.open-std.org/jtc1/sc22/open/n4217.pdf.

    POSIX.1-2008 also had two technical corrigenda, the latter of the two being dated 2016. There is an online HTML version of the standard incorporating the corrigenda at https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/ - though, again, I have had situations where the site's own search box wasn't good for finding information.

  • There is an online HTML version of POSIX.1-2017 at https://pubs.opengroup.org/onlinepubs/9699919799/ - though, again, I recommend using Google instead of that site's searchbox. According to the Open Group website "IEEE 1003.1-2017 ... is a revision to the 1003.1-2008 standard to rollup the standard including its two technical corrigenda (as-is)". Linux manpages describe it as "technically identical" to POSIX.1-2008 with Technical Corrigenda 1 and 2 applied. This is therefore not a major revision and does not change the value of the _POSIX_C_SOURCE macro.

这篇关于在哪里可以找到当前的 C 或 C++ 标准文档?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆