簡體   English   中英

在哪里可以找到當前的 C 或 C++ 標准文檔?

[英]Where do I find the current C or C++ standard documents?

對於許多問題,答案似乎可以在“標准”中找到。 然而,我們從哪里找到呢? 最好是在線的。

谷歌搜索有時會感到徒勞,尤其是對於 C 標准,因為它們淹沒在編程論壇上的大量討論中。

首先,因為這些是我現在正在搜索的,所以哪里有好的在線資源:

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

標准的 PDF 版本

截至 2014 年 9 月 1 日, 2021 9 月,PDF 格式的官方 C 和 C++ 標准文檔的最佳價格位置似乎是:

標准的非 PDF 電子版本

標准的印刷版本

標准的印刷副本可從國家標准機構和ISO 獲得,但非常昂貴。

如果您想要一份 C90 標准的硬拷貝,但價格比上面少得多,您可以在亞馬遜找到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 標准的一部分”,並且想知道為什么操作系統標准強制要求編譯器功能和語言擴展……現在您知道了!

可以找到該標准的在線版本:

C++程序設計語言標准工作草案

以下是標准的所有草案版本
以下所有內容均可免費下載
(其中許多可以在這個主要的 GitHub 鏈接中找到
2021-03-17: N4885
2020-12-15: N4878
2020-10-18: N4868
2020-04-08: N4861
2020-01-14: N4849
2019-11-27: N4842
2019-10-08: N4835 git
2019年8月15日: N4830混帳
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-02N4741 git
2018-02-12N4727 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: 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:N4141 git標准 C++14
2014-03-02:N3937
2014-03-02:N3936 git

以下是標准的所有草案版本
以下所有內容均可免費下載
2013-10-13: N3797git
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++

其他有趣的論文:

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

C99可在線獲得 引自www.open-std.org

該標准的最新公開版本是組合 C99 + TC1 + TC2 + TC3, WG14 N1256 ,日期為 2007-09-07。 這是 WG14 工作文件,但它反映了發布時的合並標准。

草稿鏈接:

C++11(+編輯修復):N3337 HTMLPDF

C++14(+編輯修復):N4140 HTMLPDF

C11 N1570文字

C99 N1256

在批准和出版之前,標准的草案將被分發以征求意見。

請注意,工作草案不是當前生效的標准,也不完全是已發布的標准

您可能會發現 C++0x 的國際標准草案很有用。

ISO 標准需要花錢,從中等(對於 PDF 版本)到更多(對於書籍版本)。

然而,雖然它們還沒有最終確定,但它們通常可以在網上找到,作為草稿。 大多數情況下,最終版本與上一稿沒有太大區別,因此雖然不完美,但它們很適合。

C99 和 C++03 標准可從 Wiley 以書籍形式獲得:

另外,正如已經提到的,未來標准的工作草案通常可以從委員會網站上獲得:

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

ANSI C 標准(又名 C.89)草案的文本可在線獲取。 在 ISO C 標准 (C.90) 接受之前,這是由 ANSI 委員會標准化的,因此各部分的編號不同(ANSI 部分 2 到 4 大致對應於 ISO 部分 5 到 7),盡管內容是(假設是)在很大程度上相同。

ISO C 和 C++ 標准非常昂貴。 另一方面,INCITS 重新發布它們的價格要低得多。 http://www.techstreet.com/似乎有 30 美元的 PDF(搜索 INCITS/ISO/IEC 14882:2003)。

也有硬拷貝版本。 查找由 Wiley 出版的英國標准協會版本。

實際的標准文件可能不是最有用的。 大多數編譯器並沒有完全實現標准,有時可能會發生實際沖突。 因此,您已經擁有的編譯器文檔將更有用。 此外,該文檔將包含特定於平台的備注和有關任何警告的注釋。

雖然不是一個實際的標准,有一個修正案稱為C94 ISO C(C89 / 90)/ 95,或標准附錄1.它被集成到C99,盡管一些編譯器,如允許你specifiy -std=c94上的命令行。 ISO/IEC 9899:1990/Amd 1:1995 可以從SAI GLOBAL (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中的措辭(即以下划線的形式)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM