在哪里可以找到当前的 C 或 C++ 标准文档?
题
对于许多问题,答案似乎可以在“标准”中找到。然而,我们在哪里可以找到它呢?最好是在线。
谷歌搜索有时会让人感到徒劳,特别是对于 C 标准,因为它们淹没在编程论坛上的大量讨论中。
首先,由于这些是我现在正在寻找的内容,所以哪里有好的在线资源:
- C89
- C99
- C11
- C++98
- C++03
- C++11
- C++14
解决方案
标准的 PDF 版本
截至 2014 年 9 月 1 日,按价格计算 PDF 格式的 C 和 C++ 标准文档的最佳位置是:
- C++17 – ISO/IEC 14882:2017: 来自 ansi.org 的 116 美元
- C++14 – ISO/IEC 14882:2014: 新西兰标准局 90 新西兰元(约合 60 美元)
- C++11 – ISO/IEC 14882:2011:
60 美元,来自 ansi.org科技街 60 美元 - C++03 – ISO 14882:2003:
30 美元,来自 ansi.orgSAI Global 48 美元 C++98 – ISO/IEC 14882:1998: 新西兰标准局 90 新西兰元(约合 60 美元)
C17/C18 – ISO/IEC 9899:2018: 232 美元,来自 ansi.org / N2176 / c17_updated_propose_fdis.pdf 2017 年 11 月草稿 (链接已损坏,请参阅 时光机 N2176)
- C11 – ISO/IEC 9899:2011:
$3060 美元,来自 ansi.org / WG14 草案版本 N1570 - C99 – ISO 9899:1999:
$3060 美元,来自 ansi.org / WG14 草案版本 N1256 - C90 – AS 3955-1991:
来自 ansi.org 的 141 美元科技街售价 175 美元 (澳大利亚版C90,与ISO 9899:1990相同) - C90 – 9899:1990 SAI Global 提供硬拷贝(88 美元 + 运费)
在标准的新版本发布后不久,您通常无法直接从标准机构获得标准(任何标准)的旧版本。因此,很难从标准机构购买 C89、C90、C99、C++98、C++03 标准。如果您需要标准的旧版本,请检查 科技街 作为一种可能的来源。例如,它仍然可以付费提供加拿大版 CAN/CSA-ISO/IEC 9899:1990 标准的 PDF 版本。
标准的非 PDF 电子版本
- C89 – ANSI 文本格式的草案版本:(https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt)
- C90 TC1;ISO/IEC 9899 TCOR1,单页 HTML 文档:(http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm)
- C90 TC2;ISO/IEC 9899 TCOR2,单页 HTML 文档:(http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc2.htm)
标准的印刷版本
标准的印刷版可从国家标准机构获得 国际标准化组织 但非常昂贵。
如果您想要一份 C90 标准的硬拷贝,并且价格比上面少得多,您也许可以找到一份便宜的二手拷贝 赫伯·希尔特的书 带注释的 ANSI 标准 在 亚马逊, ,其中包含标准的实际文本(有用)和标准的评论(不太有用)。
Wiley 和 BSI(英国标准协会)提供了 C99 和 C++03 标准的书籍形式:
标准委员会草案版本
未来标准的工作草案通常可以从委员会网站获得:
请注意,这些文档与标准不同,尽管决定标准的会议之前的版本通常非常接近最终标准中的内容。FCD(最终委员会草案)版本受密码保护;您需要加入标准委员会才能获得它们。
然而,在我看来,即使草案版本可能非常接近标准的最终批准版本,您确实应该获得实际文档的副本 - 特别是如果您打算引用它们作为参考。当然,如果现金短缺,饥饿的学生应该继续使用汇票。
看来,如果你愿意并且能够在标准批准后等待几个月,那么在寻找标准时搜索“INCITS/ISO/IEC”而不是“ISO/IEC”是关键。这样我就能够以合理的价格找到 C++11 标准,现在又找到了 C11 标准。因此,作为示例,您在以下位置搜索“INCITS/ISO/IEC 9899:2011”而不是“ISO/IEC 9899:2011” 网上商店.ansi.org 您会找到价格合理的 PDF 版本。
网站 https://wg21.link/ 提供 C++ 当前工作草案和标准草案以及委员会文件的短 URL 链接:
- https://wg21.link/std11 - C++11
- https://wg21.link/std14 - C++14
- https://wg21.link/std17 - C++17
- https://wg21.link/std - 目前的工作草案
该标准的当前草案作为 LaTeX 源保留在 吉图布. 。这些源可以使用以下命令转换为 HTML cxxdraft-htmlgen. 。以下站点维护如此生成的 HTML 页面:
宋添 还维护生成的网络 TS 和范围 TS 的 HTML 和 PDF 版本。
其他提示
该标准的在线版本可以找到:
工作草案,编程语言 C++ 标准
以下为该标准的所有草案版本:
以下所有内容均可免费下载
2019-03-15: N4810 git
2019-01-21: N4800 git
2018-11-26: N4791 git
2018-10-08: N4778 git
2018-07-07: N4762 git
2018-05-07: N4750 git
2018-04-02: N4741 git
2018-02-12: N4727 git
2017-11-27: N4713 git
2017-10-16: N4700 git
2017-07-30: N4687 git
这似乎是新标准:
这些版本需要身份验证
2017-03-21: N4660 是 C++17 标准草案
以下为该标准的所有草案版本:
以下所有内容均可免费下载
2017-03-21: N4659 git
2017-02-06: N4640 git
2016-11-28: N4618 git
2016-07-12: N4606 git
2016-05-30: N4594 git
2016-03-19: N4582 git
2015-11-09: N4567 git
2015-05-22: N4527 git
2015-04-10: N4431 git
2014-11-19: N4296 git
这似乎是旧的 C++14 标准:
这些版本需要身份验证
2014-10-07: N4140 git 本质上是 C++14,修正了一些小错误和拼写错误
2014-09-02: N4141 git 标准 C++14
2014-03-02: N3937
2014-03-02: N3936 git
以下为该标准的所有草案版本:
以下所有内容均可免费下载
2013-10-13: N3797 git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337 git 本质上是 C++11,修正了一些小错误和拼写错误
这似乎是旧的 C++11 标准:
此版本需要身份验证
2011-04-05: N3291 C++11(或非常接近)
以下为该标准的所有草案版本:
以下所有内容均可免费下载
2011-02-28: N3242 (与 N3291 的差异非常小)
2010-11-27: N3225
2010-08-21: N3126
2010-03-29: N3090
2010-02-16: N3035
2009-11-09: N3000
2009-09-25: N2960
2009-06-22: N2914
2009-03-23: N2857
2008-10-04: N2798
2008-08-25: N2723
2008-06-27: N2691
2008-05-19: N2606
2008-03-17: N2588
2008-02-04: N2521
2007-10-22: N2461
2007-08-06: N2369
2007-06-25: N2315
2007-05-07: N2284
2006-11-03: N2134
2006-04-21: N2009
2005-10-19: N1905
2005-04-27: N1804
这似乎是旧的 C++03 标准:
以下所有版本都需要身份验证
2004-11-05: N1733
2004-07-16: N1655 非官方
2004-02-07: N1577 C++03(或非常接近)
2001-09-13: N1316 扩展技术勘误草案
1997年00月00日:N1117 扩展技术勘误草案
以下为该标准的所有草案版本:
以下所有内容均可免费下载
1996-00-00: N0836 扩展技术勘误草案
1995-00-00:N0785 信息系统国际标准拟议草案工作文件 - 编程语言 C++
其他有趣的论文:
2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011
C99 是 在线提供. 。引自 www.open-std.org:
该标准的最新公开版本是组合的C99 + TC1 + TC2 + TC3, WG14 N1256, ,日期为 2007 年 9 月 7 日。这是一份WG14工作文件,但它反映了发行时的合并标准。
您可能会发现 国际标准草案 对于 C++0x 有用。
ISO 标准需要花钱,从适量(对于 PDF 版本)到多一点(对于书籍版本)不等。
虽然它们尚未最终确定,但通常可以在网上找到它们的草稿。大多数情况下,最终版本与上一个草案没有太大差异,因此虽然不完美,但它们非常适合。
Wiley 提供了 C99 和 C++03 标准的书籍形式:
另外,正如已经提到的,未来标准的工作草案通常可以从委员会网站上获得:
ISO C 和 C++ 标准非常昂贵。另一方面,INCITS 重新出版它们的费用要低得多。 http://www.techstreet.com/ 似乎有30美元的PDF(搜索incits/iso/IEC 14882:2003)。
也提供硬拷贝版本。查找由 Wiley 出版的英国标准协会版本。
的文本 ANSI C 标准草案 (又名 C.89)可在线获取。这是在被 ISO C 标准 (C.90) 接受之前由 ANSI 委员会标准化的,因此各节的编号不同(ANSI 第 2 节到第 4 节大致对应于 ISO 第 5 节到第 7 节),尽管内容是(假定为是)大致相同。
实际的标准文档可能不是最有用的。大多数编译器没有完全实现这些标准,有时实际上可能会发生冲突。因此,您已有的编译器文档将会更有用。此外,该文档将包含特定于平台的注释和有关任何警告的注释。
尽管不是实际标准,但 ISO C (C89/90) 有一个修订版,称为 C94/95,或规范性附录 1。它被集成到 C99 中,尽管一些编译器如 铛 允许您指定 -std=c94
在命令行上。ISO/IEC 9899:1990/Amd 1:1995 可以以高价购买 赛全球 (PDF 或硬拷贝)。
可以找到该文档的摘要 这里.
当(当时)考虑(当时的)ANSI C标准在1990年采用国际标准时,有几种异议,因为它没有解决国际化问题。由于该标准已经在制造中已经有几年了,因此同意将进行一些更改以提供基础(例如,添加了第7.10.7款的功能),将分别进行工作以提供标准的适当国际化。这项工作最终形成了规范性附录 1。
规范附录1体现了C对国际角色集的局限性和承诺的反应。Digraphs和标头旨在改善ISO 646国家变体编写的C程序的外观,例如,例如,{或}字符。在另一端,设施连接到并将旧标准的几乎没有足够的基础连接到一组完整而一致的实用程序集,用于处理宽字符和多型字符串。
本文件总结了规范性附录 1。它旨在快速通知已经熟悉标准的读者;它不会,也不会引入NA1背后的复杂主题,也不能将原始文档替换为参考手册。(尽管如此,它试图尽可能准确,其作者想听到任何错误或遗漏。)
http://c0x.coding-guidelines.com/ 包含可搜索的、基于 HTML 的 C 标准版本。实际上,稍微修改一下的版本:
该网站包含 N1256 的修改版本。它包括已从C99(即以形式击中)和曾经出现在C99中(即,下划线形式)的措辞中删除的措辞。