对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里找到呢?最好在线。
有时,谷歌搜索有时会徒劳无功,特别是对于C标准,因为它们淹没在编程论坛上的讨论中。
首先,由于这些是我现在正在搜索的内容,因此在哪里有不错的在线资源:
- C89
- C99
- C11
- C ++ 98
- C ++ 03
- C ++ 11
- C ++ 14
- C ++ 17
对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里找到呢?最好在线。
有时,谷歌搜索有时会徒劳无功,特别是对于C标准,因为它们淹没在编程论坛上的讨论中。
首先,由于这些是我现在正在搜索的内容,因此在哪里有不错的在线资源:
Answers:
截至2014年9月1日,按价格提供C和C ++标准文档的最佳位置是:
C ++ 98 – ISO / IEC 14882:1998:新西兰标准局:90新西兰元(约合60美元)
C17 / C18 - ISO / IEC 9899:2018:从SAI全球公司$ 185 / $ 116 INCITS / ANSI / 从2017年11月N2176 / c17_updated_proposed_fdis.pdf草案(链路损坏,看看Wayback机器N2176)
在发布新版本的标准后不久,通常无法直接从标准机构获得标准(任何标准)的旧修订版。因此,很难从标准机构中找到C89,C90,C99,C ++ 98,C ++ 03的标准。如果您需要标准的旧版本,请选择Techstreet作为可能的来源。例如,它仍然可以收费提供加拿大版本的CAN / CSA-ISO / IEC 9899:1990 PDF标准。
该标准的印刷本可从国家标准机构和ISO获得,但价格昂贵。
如果你想少得多的钱比高于C90标准的硬拷贝,你可以找到一个便宜的二手副本草本Schildt的书附注的ANSI标准在亚马逊,它包含了标准的实际文本(有用)以及有关标准的评论(没什么用处-它包含一些危险和误导性错误)。
Wiley和BSI(英国标准协会)以书本形式提供C99和C ++ 03标准:
未来标准的工作草案通常可以从委员会的网站上获得:
如果要从当前或较早的C / C ++标准中获取草稿,则可以从Internet上免费获得一些草稿:
我找不到C89的PDF,但是与下面的ISO / IEC 9899:1990(C90)草案相同。唯一的区别在于样板和部分编号。
https://www.pdf-archive.com/2014/10/02/ansi-iso-9899-1990-1/ansi-iso-9899-1990-1.pdf
(除前者和节编号外,几乎与ANSI X3.159-198(C89)相同。请注意,在本文档中可以看到ANSI和ISO / IEC标准之间的转换,该文档将其名称称为“ ANSI / ISO” :9899/99”,尽管这不是后来制定的标准的正确名称,正确的名称是“ ISO / IEC 9899:1990”)
http://www.lirmm.fr/~ducour/Doc-objets/ISO+IEC+14882-1998.pdf
https://cs.nyu.edu/courses/fall11/CSCI-GA.2110-003/documents/c++2003std.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
https://github.com/cplusplus/draft/blob/master/papers/n4140.pdf?raw=true
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
请注意,尽管确定标准的会议之前的版本通常与最终标准中的内容非常接近,但这些文档与标准不同。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还维护Networking TS和Ranges TS的生成的HTML和PDF版本。
该标准的在线版本可以找到:
以下是该标准的所有草案版本:以下所有版本
均可免费下载
(其中许多可在此主要GitHub链接上找到)
2020-01-14: N4849 git
2019-11-27: N4842 git
2019-10-08: N4835 的Git
2019年8月15日: N4830 的git
2019年6月17日: N4820 的git
2019年3月15日: N4810 的git
2019年1月21日: N4800 的git
2018年11月26日: N4791 的git
2018年10月8日: N4778 混帐
2018-07-07: N4762 git
2018-05-07:N4750 的Git
2018年4月2日:N4741 的git
2018年2月12日:N4727 的git
2017年11月27日:N4713 的git
二○一七年十月一十六日:N4700 的git
2017年7月30日:N4687 混帐
这似乎是新标准:
这些版本需要身份验证
2017-03-21: N4660是C ++ 17草案标准
以下标准的所有版本草案:
以下所有条件都可以免费下载
2017年3月21日: N4659 的git
2017年2月6日: N4640 的git
2016年11月28日: N4618 的git
2016年7月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 ++
到2020年 / 2019年 / 2018年 / 2017年 / 2016年 / 到2015年 / 2014年 / 2013年 / 2012年 / 2011年
C99 可在线获得。引用自www.open-std.org:
该标准的最新的公开可用版本是日期为2007-09-07 的组合的C99 + TC1 + TC2 + TC3,WG14 N1256。这是WG14工作文件,但反映了发布时的合并标准。
Wiley提供书本形式的C99和C ++ 03标准:
另外,如前所述,将来的标准工作草案通常可以从委员会的网站上获得:
ISO C和C ++标准非常昂贵。另一方面,INCITS重新发布的费用要少得多。http://www.techstreet.com/似乎有30美元的PDF(搜索INCITS / ISO / IEC 14882:2003)。
也提供硬拷贝版本。查找由Wiley发行的British Standards Institute版本。
实际的标准文档可能不是最有用的。大多数编译器没有完全实现标准,有时可能会发生冲突。因此,您已经拥有的编译器文档将更加有用。此外,文档还将包含特定于平台的注释和任何注意事项的注释。
可以在线获得ANSI C标准草案(又名C.89)的文本。这是在被ISO C标准(C.90)接受之前由ANSI委员会进行标准化的,因此各部分的编号有所不同(ANSI第2至4部分大致对应于ISO第5至7部分),尽管内容是(假定的)大致相同)。
[0, 60]
,而C90(错误地)指定为Cubbi[0, 61]
tm_sec
为(0, 61)
。我以为那是leap秒,很有意义。
尽管不是实际标准,但对ISO C(C89 / 90)进行了修订,称为C94 / 95或标准附录1。尽管某些编译器(例如Clang)允许您-std=c94
在命令行上进行指定,但它已集成到C99中。可以从SAI GLOBAL以高价购买ISO / IEC 9899:1990 / Amd 1:1995 (PDF或印刷本)。
可以在此处找到该文档的摘要。
当ANSI C标准(当时的草案)在1990年被考虑采用国际标准时,由于它没有解决国际化问题而引起了一些反对。由于该标准已经制定了几年,因此同意对基础进行一些更改(例如,添加了第7.10.7节中的功能),并且将单独进行工作以提供基础。标准的适当国际化。这项工作在规范性附录1中达到了高潮。
规范性附录1体现了C对国际字符集的局限性和承诺的反应。图和标头旨在改善以ISO 646的国家变体编写的C程序的外观,而无需使用{或}字符。另一方面,这些设施仅将旧标准的勉强充分的基础连接起来并扩展到一套完整,一致的实用程序中,以处理宽字符和多字节字符串。
本文档概述了规范性附录1。其目的是为了快速告知已经熟悉该标准的读者。它不会也不能介绍NA1背后的复杂主题,也不能代替原始文档作为参考手册。(尽管如此,它试图尽可能准确,其作者希望听到任何错误或遗漏。)
http://c0x.coding-guidelines.com/包含C标准的基于HTML的可搜索版本。实际上,是一个稍微修改的版本:
该网站包含N1256的修改版本。它包括已从C99中删除的措辞(即以删除线的形式)和以前在C99中出现的措辞(即以下划线的形式)。