394

对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里可以找到呢?最好是在线的。

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

为了开始这个,因为这些是我现在正在搜索的,哪里有好的在线资源:

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

11 回答 11

514

标准的 PDF 版本

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

标准的非 PDF 电子版本

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

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

标准的印刷版本

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

如果您想要一份 C90 标准的硬拷贝,而且价格比上面要少得多,您可以在Amazon上找到Herb Schildt的书The Annotated ANSI Standard的廉价二手副本,其中包含标准的实际文本(有用)和对该标准的评论(不太有用 - 它包含几个危险和误导性的错误)。

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

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

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

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

对于 C:

对于 C++:

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

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


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


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


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

Tim Song还维护生成的 HTML 和 PDF 版本的 Networking TS 和 Ranges TS。

C 标准的 POSIX 扩展

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

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

于 2008-09-17T14:23:17.037 回答
451

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

工作草案,编程语言 C++ 标准

以下所有标准草案版本
以下所有内容均可免费下载
2021-06-18: N4892
2021-03-17: N4885
2020-12-15: N4878
2020-10-18: N4868
2020-04-08: N4861

这是 C++20 标准:
此版本需要身份验证
2020-04-08: N4860

以下所有标准草案版本
以下所有内容均可免费下载
(其中许多可在此主要 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混帐 2018-05-07: N4750混帐






2018-04-02 :N4741 混帐
2018-02-12 :N4727 混帐
2017-11-27:N4713 混帐
2017-10-16:N4700 混帐
2017-07-30:N4687 混帐

这是旧的 C++17 标准:
此版本需要身份验证
2017-03-21: N4660

以下所有标准草案版本
以下所有内容均可免费下载
2017-03-21: N4659 git
2017-02-06: N4640 git
2016-11-28: N4618 git
2016-07-12: N4606 git
2016-05 -30: N4594 混帐
2016-03-19: N4582 混帐
2015-11-09: N4567 混帐
2015-05-22: N4527 混帐
2015-04-10: N4431 混帐
2014-11-19: N4296 混帐

这是旧的 C++14 标准
这些版本需要身份验证
2014-10-07: N4140 git本质上是 C++14,有小错误和拼写错误更正
2014-09-02: N4141 git Standard 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

以下所有标准草案版本
以下所有内容均可免费下载
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 Draft Expanded Technical Corrigendum
1995-00-00:N0785 Working Paper for Draft Proposed International Standard for Information Systems - Programming Language C++

其他有趣的论文:

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

于 2011-01-11T02:02:48.263 回答
64

C99可在线获得。引自www.open-std.org

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

于 2008-09-17T15:33:15.840 回答
26

草稿链接:

C++11(+编辑修复):N3337 HTML , PDF

C++14(+编辑修复):N4140 HTML , PDF

C11 N1570正文

C99 N1256

标准草案在批准和出版之前分发以征求意见。

请注意,工作草案不是当前有效的标准,也不完全是已发布的标准

于 2012-05-05T18:53:45.543 回答
12

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

于 2008-09-17T10:57:08.700 回答
11

ISO 标准需要花钱,从中等(PDF 版本)到更多(书籍版本)。

然而,虽然它们尚未最终确定,但它们通常可以在网上找到,作为草稿。大多数情况下,最终版本与最终草案没有太大区别,因此虽然不完美,但它们会很好地适应。

于 2008-09-17T10:10:45.490 回答
6

Wiley 提供了 C99 和 C++03 标准的书本形式:

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

C-201x 草案以N1336形式提供,C++0x 草案以N3225 形式提供

于 2008-09-17T13:57:52.667 回答
6

ANSI C 标准(又名 C.89)的草案文本可在线获取。这在被 ISO C 标准 (C.90) 接受之前由 ANSI 委员会标准化,因此各部分的编号不同(ANSI 部分 2 到 4 大致对应于 ISO 部分 5 到 7),尽管内容是(假设to be) 大体相同。

于 2013-08-16T21:52:02.307 回答
3

ISO C 和 C++ 标准非常昂贵。另一方面,INCITS 以更少的价格重新发布它们。http://www.techstreet.com/似乎有 30 美元的 PDF(搜索 INCITS/ISO/IEC 14882:2003)。

也提供硬拷贝版本。查找由 Wiley 出版的英国标准协会版本。

于 2008-09-17T10:18:04.537 回答
2

实际的标准文件可能不是最有用的。大多数编译器没有完全实现这些标准,有时实际上可能会发生冲突。因此,您已经拥有的编译器文档将更加有用。此外,文档将包含特定于平台的备注和任何警告说明。

于 2008-09-17T15:38:42.003 回答
1

虽然不是一个实际标准,但 ISO C (C89/90) 有一个修订,称为 C94/95 或规范附录 1。它被集成到 C99 中,尽管一些编译器(如Clang )允许您-std=c94在命令行上指定。ISO/IEC 9899:1990/Amd 1:1995 可以从SAI GLOBAL以高价购买(PDF 或硬拷贝)。

可以在此处找到该文档的摘要。

当(当时的草案)ANSI C 标准在 1990 年被考虑采用国际标准时,有几个反对意见,因为它没有解决国际化问题。由于该标准已经制定了几年,因此同意进行一些更改以提供基础(例如,增加了第 7.10.7 条中的功能),并将单独开展工作以提供标准的适当国际化。这项工作在规范性附录 1 中达到高潮。

规范性附录 1 体现了 C 对国际字符集的限制和承诺的反应。Digraphs 和 header 旨在改善以 ISO 646 的国家变体编写的 C 程序的外观,没有例如 { 或 } 字符。另一方面,这些设施连接到旧标准的勉强基础并将其扩展为一套完整且一致的实用程序,用于处理宽字符和多字节字符串。

本文档总结了规范性附录 1。旨在快速告知已经熟悉该标准的读者;它没有也不能介绍 NA1 背后的复杂主题,也不能代替原始文档作为参考手册。(尽管如此,它试图尽可能准确,其作者希望了解任何错误或遗漏。)

于 2014-12-08T13:36:48.893 回答