it-swarm.cn

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

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

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

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

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

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 的书 带注释的ANSI标准 at 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版本。

395
Michael Burr

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

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

以下标准的所有草稿版本
以下所有内容均可免费下载
2019-01-21: N4800git
2018-11-26: N4791git
2018-10-08: N4778git
2018-07-07: N4762git
2018-05-07: N4750git
2018-04-02: N4741git
2018-02-12: N4727git
2017-11-27: N4713git
2017-10-16: N4700git
2017-07-30: N4687git

这似乎是新标准:
这些版本需要身份验证
2017-03-21: N4660 是C++ 17草案标准

以下标准的所有草稿版本
以下所有内容均可免费下载
2017-03-21: N4659git
2017-02-06: N4640git
2016-11-28: N4618git
2016-07-12: N4606git
2016-05-30: N4594git
2016-03-19: N4582git
2015-11-09: N4567git
2015-05-22: N4527git
2015-04-10: N4431git
2014-11-19: N4296git

这似乎是旧的C++ 14标准
这些版本需要身份验证
2014-10-07: N4140git 基本上是C++ 14,有轻微的错误和拼写错误
2014-09-02: N4141git Standard C++ 14
2014-03-02: N3937
2014-03-02: N3936git

以下标准的所有草稿版本
以下所有内容均可免费下载
2013-10-13: N3797git
2013-05-16: N3691
2013-05-15: N3690
2012-11-02: N3485
2012-02-28: N3376
2012-01-16: N3337git 基本上是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年

406
Martin York

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

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

63
Frederico

草稿链接: /

C++ 11(+编辑修正):N3337 _ html __ pdf _

C++ 14(+编辑修正):N4140 _ html __ pdf _

C11 N1570text

C99 N1256

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

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

23
user1055604

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

12
James Hopkin

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

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

9
Pieter

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

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

C-201x草案可用 N1336 ,C++ 0x草案可用 N3225

6
Anthony Williams

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

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

3
MSalters

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

3
jxh

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

2
Kris Kumler

虽然不是实际标准,但对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对国际字符集的局限性和承诺的反应。 Digraph和标题旨在改善用ISO 646的国家变体编写的C程序的外观,而不用例如{或}字符。另一方面,设备连接到旧标准并将其扩展到一个完整且一致的实用程序集,用于处理宽字符和多字节字符串。

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

1
user3920237