我在哪里可以找到当前的C或c++标准文档?

对于许多问题,答案似乎在“标准”中找到。然而,我们在哪里找到它呢?最好是网上。

谷歌有时会让人觉得毫无意义,尤其是对于C标准,因为它们淹没在编程论坛上的讨论洪流中。

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

  • C89
  • C99
  • C11
  • C + + 98
  • c++ 03
  • c++ 11
  • c++ 14
  • c++ 17
163871 次浏览

ISO标准需要花钱,从中等数额(PDF版本)到稍微多一点(纸质版本)。

虽然它们还没有最终定稿,但通常可以在网上找到草稿。大多数情况下,最终版本与上一版没有太大的不同,所以虽然不完美,但它们也很合适。

ISO C和c++标准非常昂贵。另一方面,INCITS重新出版的费用要低得多。http://www.techstreet.com/似乎有30美元的PDF (搜索INCITS/ISO/IEC 14882:2003).

也有硬拷贝版本。请查阅Wiley出版的英国标准协会版本。

你可能会发现c++ 0x的国际标准草案很有用。

C99和c++ 03标准可从Wiley以书籍的形式获得:

此外,如前所述,未来标准的工作草案通常可从委员会网站获得:

C-201x草案是N1336, c++ 0x草案是N3225

标准的PDF版本

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

标准的非pdf电子版本

警告:标准草案的大多数副本以PDF格式发布,如果文本/HTML是从PDF转录或自动生成的,则可能会引入错误

(托管c++ 11工作草案纯文本版本的站点也有这种格式的一些c++ 14草案。但它们都不是最终工作草案N4140的副本。)

标准的印刷版本

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

如果你想以比上面少得多的钱获得C90标准的硬拷贝,你可以在亚马逊找到草Schildt的书注释的ANSI标准 . /em> . /em>的廉价二手副本,其中包含标准的实际文本(有用)和对标准的注释(不太有用-它包含几个危险和误导性的错误)。

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链接:

  • __abc0 - c++ 11
  • __abc0 - c++ 14
  • __abc0 - c++ 17
  • __abc0 - c++ 20
  • https://wg21.link/std -当前工作草案(截至2022年5月仍指向2021年版本)

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

蒂姆的歌还维护生成的HTML和PDF版本的Networking TS和Ranges TS。

POSIX对C标准的扩展

POSIX标准(IEEE 1003.1)要求兼容的操作系统包含C编译器。这个编译器必须与C标准兼容,并且还必须支持“系统接口”中定义的各种扩展。POSIX的部分(例如off_t数据类型,<aio.h>报头,clock_gettime()函数和_POSIX_C_SOURCE宏)。

因此,如果你试图查找一个特定的函数,被告知“这个函数是POSIX的一部分,而不是C标准”,并想知道为什么操作系统标准强制要求编译器特性和语言扩展……现在你知道了!

C99是网上。引用自www.open-std.org:

该标准的最新公开版本是 合并C99 + TC1 + TC2 + TC3, WG14 N1256,日期2007-09-07。这是 WG14的工作文件,但它反映了统一的标准 发布时间。

实际的标准文档可能不是最有用的。大多数编译器并没有完全实现这些标准,有时甚至会发生冲突。所以你已经有的编译器文档会更有用。此外,文档将包含特定于平台的注释和任何注意事项。

该标准的在线版本可以在以下网站找到:

编程语言c++标准工作草案

以下标准的所有草案版本:

以下所有内容均可免费下载 2022-09-05: N4917
2022-03-17: N4910
2021-10-22: N4901
2021-06-18: N4892
2021-03-17: N4885
2020-12-15: N4878
2020-10-18: N4868
2020-04-08: N4861 < / p > < p > 这是c++ 20标准:

此版本要求Authentication
2020-04-08: N4860 < / p > < p > 以下标准的所有草案版本:
以下所有内容均可免费下载
(其中许多可以在主GitHub链接中找到)
2020-01-14: N4849
2019年11月27日:N4842
2019-10-08: N4835 git
2019-08-15: N4830 git
2019-06-17: N4820 git
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

< p > 这是旧的c++ 17标准:
此版本要求Authentication
2017-03-21: N4660 < / p > < p > 以下标准的所有草案版本:
以下所有内容均可免费下载
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

< p > 这是旧的c++ 14标准:
这些版本要求Authentication
2014-10-07: N4140 git本质上是c++ 14的小错误和错别字更正
2014-09-02: N4141 git Standard c++ 14
.使用实例 2014-03-02: N3937
2014-03-02: N3936 git

< p > 以下标准的所有草案版本:
以下所有内容均可免费下载
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的小错误和错字更正

< p > 这是旧的c++ 11标准:
此版本要求Authentication
2011-04-05: N3291 < / p > < p > 以下标准的所有草案版本:
以下所有内容均可免费下载
2011-02-28: N3242 (differences from N3291 very minor)
日志示例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 < / p > < p > 这是旧的c++ 03标准:
以下所有版本都要求Authentication
2004-11-05: N1733
2004-07-16: N1655非官方
2004-02-07: N1577 c++ 03 (Or Very Close)
2001-09-13: N1316扩展技术勘误表
1997-00-00: N1117扩展技术勘误草案

< p > 以下标准的所有草案版本:
以下所有内容均可免费下载
1996-00-00: N0836扩展技术勘误草案
1995-00-00: N0785信息系统国际标准草案-编程语言c++

其他有趣的论文:

< p > 2022 / 2021 / 2020 / 2019 / 2018 / 2017 / 2016 / 2015 / 2014 / 2013 / 2012 / 2011 < / p >

草案链接:

c++ 11(+编辑修复):N3337 超文本标记语言PDF

c++ 14(+编辑修复):N4140 超文本标记语言PDF

C11 __abc0 (__abc1)

C99 N1256

标准的草稿在批准和出版之前散发征求意见。

请注意认为工作草案不是目前生效的标准,也不是已经发布的标准

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年采用国际标准时,有几个 反对意见,因为它没有解决国际化问题。 因为《标准》已经酝酿了好几年 同意做一些改动,以提供基础(为 例如,subsub7.10.7中的函数被添加),并且工作将 分别进行,提供适当的国际化 标准。这项工作在规范附录1中达到了高潮 规范性附录1体现了C对限制和限制的反应 国际字符集的承诺。有向图和 头文件是为了改善C程序的外观 没有{或}字符的ISO 646的国家变体。在 另一方面,连接和的设施 将旧标准勉强足够的基础扩展为 用于处理宽字符的完整且一致的实用程序集 和多字节字符串。

本文档总结了规范附录1。目的是 迅速告知已经熟悉标准的读者;它 没有,也不能介绍NA1背后的复杂主题, 也不能代替原始文档作为参考手册。 (尽管如此,它还是试图尽可能准确,以及它的作者