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

时间:2008-09-17 10:04:05

标签: c++ c standards c++-faq

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

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

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

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

12 个答案:

答案 0 :(得分:408)

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

编程语言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

答案 1 :(得分:397)

标准的PDF版本

截至2014年9月1日,PDF格式的C和C ++标准文档的最佳价格位置为:

在新版标准发布后不久,您不能直接从标准机构获得标准(任何标准)的旧版本。因此,从标准组织购买C89,C90,C99,C ++ 98,C ++ 03的标准很难找到。如果您需要标准的旧版本,请将Techstreet视为一个可能的来源。例如,它仍然可以提供PDF格式的加拿大版CAN / CSA-ISO / IEC 9899:1990标准,但需要付费。

标准的非PDF电子版

打印标准版本

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

如果您希望C90标准的硬拷贝比上面的钱少得多,您可以在Herb Schildt找到The Annotated ANSI Standard的书Amazon的廉价二手副本,其中包含标准的实际文本(有用)和标准的评论(不太有用)。

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

标准委员会草案版本

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

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

但是,在我看来,尽管草案版本可能非常接近最终批准的标准版本,但您应该真正获得实际文档的副本 - 特别是如果您计划引用它们作为参考。当然,饥饿的学生应该继续使用草稿,如果现金紧张。


看来,如果您愿意并且能够在批准标准后等待几个月,那么在寻找标准时搜索“INCITS / ISO / IEC”而不是“ISO / IEC”是关键。这样我就能以合理的价格找到C ++ 11标准,现在是C11标准。因此,作为一个例子,您在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还维护生成的网络TS和范围TS的HTML和PDF版本。

答案 2 :(得分:63)

C99是available online。引自www.open-std.org

  

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

答案 3 :(得分:23)

草稿链接:

C ++ 11(+编辑修正):N3337 HTMLPDF

C ++ 14(+编辑修正):N4140 HTMLPDF

C11 N1570text

C99 N1256

  在批准和公布之前,标准的Drafts已经发布以征求意见。

     

Note工作草案不是现行标准,并不完全是公布的标准

答案 4 :(得分:12)

您可能会发现C ++ 0x的draft international standard很有用。

答案 5 :(得分:9)

ISO标准需要花费金钱,从适度数量(对于PDF版本)到更多(对于书籍版本)。

虽然它们尚未最终确定,但它们通常可以作为草稿在线发现。大部分时间最终版本与最后一个版本没有显着差异,所以虽然不完美,但它们都适合。

答案 6 :(得分:6)

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

另外,正如已经提到的,未来标准的工作草案通常可以从委员会网站获得:

C-201x草稿以N1336的形式提供,C ++ 0x草稿以N3225的形式提供。

答案 7 :(得分:3)

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

也可以使用硬拷贝版本。寻找由Wiley出版的英国标准协会版本。

答案 8 :(得分:3)

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

答案 9 :(得分:2)

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

答案 10 :(得分:1)

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

可以找到该文件的摘要here

  

当考虑(然后草案)ANSI C标准时   1990年通过了一项国际标准,有几项   反对意见,因为它没有解决国际化问题。   因为标准已经有好几年了,所以   同意将做出一些改变以提供基础(for   例如,添加了子条款7.10.7中的功能),工作就可以了   分开进行,以提供适当的国际化   标准。这项工作最终达到了规范性附录1。

     

规范性附录1体现了C对局限性和局限性的反应   国际字符集的承诺。有向图和   标题是为了改善写入的C程序的外观   ISO 646的国家变体,没有例如{或}字符。在   频谱的另一端,与之相连的设施    将旧标准勉强扩展到一个   用于处理宽字符的完整且一致的实用程序集   和多字节字符串。

     

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

答案 11 :(得分:-5)

http://c0x.coding-guidelines.com/包含可搜索的,基于HTML的C标准版本。实际上,略有修改版本:

  

此网站包含N1256的修改版本。这包括   已从C99中删除的措辞(即通过表格形式删除)   曾经出现在C99中的措辞(即下划线   形式)。