現在のCまたはC ++標準のドキュメントはどこにありますか?


394

多くの質問に対する答えは「標準」にあるようです。しかし、それはどこにありますか?できればオンライン。

グーグルは、プログラミングフォーラムでの議論の洪水に溺れているため、特にC標準では、場合によっては無駄に感じることがあります。

これを始めるために、これらは私が今探しているものですので、どこに良いオンラインリソースがありますか?

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

4
MSOに関する議論に注意してください。この質問に対する答えは、CおよびC ++プログラマーにとって貴重です。それは開いたままにしておく必要があります(それが公開されたら、回答に追加するC ++ 2014標準があるためです-既に承認されています)。
ジョナサンレフラー

回答:


439

標準のPDFバージョン

2014年9月1日の時点で、PDFのCおよびC ++標準ドキュメントの価格別の最適な場所は次のとおりです。

通常、新しいバージョンの標準がリリースされた直後に、標準(任意の標準)の古いリビジョンを標準化団体から直接入手することはできません。したがって、C89、C90、C99、C ++ 98、C ++ 03の標準を標準化団体から購入することは困難です。標準の古いリビジョンが必要な場合は、Techstreetを1つのソースとして確認してください。たとえば、カナダ版CAN / CSA-ISO / IEC 9899:1990規格をPDFで有料で提供できます。

標準のPDF以外の電子バージョン

標準のバージョンを印刷する

規格の印刷コピーは、各国の標準化団体およびISOから入手できますが、非常に高価です。

あなたは上記よりもはるかに少ないお金のためにC90標準のハードコピーが必要な場合は、の安い中古コピーを見つけることができるかもしれハーブSchildtの著書ザ・注釈付きANSI規格アマゾン(便利な)標準の実際のテキストが含まれています、標準に関する解説(あまり役に立たない-いくつかの危険で誤解を招くエラーが含まれています)。

C99およびC ++ 03標準は、本の形式でWileyおよびBSI(英国標準協会)から入手できます。

標準委員会ドラフトバージョン(無料)

将来の標準の草案は、委員会のWebサイトから入手できることがよくあります。

現在または以前のC / C ++標準からドラフトを入手したい場合は、インターネットで無料で入手できるものがあります。

Cの場合:

C ++の場合:

これらの文書は標準と同じではないことに注意してください。ただし、標準を決定する会議の直前のバージョンは通常、最終的な標準の内容に非常に近いものです。FCD(最終委員会ドラフト)バージョンはパスワードで保護されています。それらを取得するには、標準委員会に参加する必要があります。

ドラフトバージョンは標準の最終承認済みバージョンに非常に近いかもしれませんが、この投稿の編集者の中には、実際のドキュメントのコピーを入手することを強くお勧めします。特に、参照として引用する予定がある場合はそうです。もちろん、飢えている学生は、現金に縛られている場合は先に進んで下書きを使用する必要があります。


規格が承認されてから数か月待つことができるなら、規格を探すときに「ISO / IEC」ではなく「INCITS / ISO / IEC」を検索することが重要であるようです。そうすることで、この投稿の編集者の1人は、リーズナブルな価格でC11およびC ++ 11標準を見つけることができました。たとえば、webstore.ansi.orgで「ISO / IEC 9899:2011」ではなく「INCITS / ISO / IEC 9899:2011」を検索すると、手頃な価格のPDFバージョンが見つかります。


サイトhttps://wg21.link/は、C ++の現在の草案と草案の標準、および委員会の文書への短いURLリンクを提供します。


標準の現在のドラフトは、Github上のLaTeXソースとして維持されます。これらのソースは、cxxdraft-htmlgenを使用してHTMLに変換できます。次のサイトは、生成されたHTMLページを維持しています。

Tim Songは、Networking TSおよびRanges TSの生成されたHTMLおよびPDFバージョンも維持しています。


60
シルトの本の問題は、彼のコメントが、彼がコメントする基準を大幅に引き下げていることです。
sbi

57
非常に悪い本の推奨(Herb Schildt's)、これを参照してください:lysator.liu.se/c/schildt.html
Wiz

11
私はレビューを承知しています-この本は、標準を非常に安価に入手するための可能な方法としてのみ言及しています。しかし、私は人々がレビューについても知っているべきだと思います。安価な標準のハードコピーが必要な場合は、本の注釈部分を無視することをお勧めします(それが私のやり方です)。
Michael Burr

37
シルトの本(私は絶版だと思います)は、実際の標準の印刷されたコピーよりもはるかに安価でした。価格の違いはアノテーションの値を反映していることが示唆されています。本のすべてのコピーには、Clive DW FeatherのThe Annotated Annotated C Standardの印刷物が添付されている必要があります。(一部の紹介資料がシルトの本から欠落していることに注意してください。)
キース・トンプソン

12
@MichaelBurr、すべての標準はwww.open-std.orgで無料で見つけることができます。回答は受け入れられているので、リンクを無料のものに変更してみませんか?
Shahbaz

429

標準のオンラインバージョンは次の場所にあります。

草案、プログラミング言語C ++の標準

次の標準のすべてのドラフトバージョン
以下はすべて無料でダウンロードできます
(これらの多くは、このメインのGitHubリンクにあります
2020-01-14: N4849 git
2019-11-27: N4842 git
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 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 ++

その他の興味深い論文:

2020年までに / 2019年 / 2018年 / 2017年 / 2016年の / 2015年までに / 、2014年 / 2013年 / 2012年の / 2011年


1
あなたはリンクがあなたに行くどの標準に言及したいかもしれません!C11標準も追加:open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
Shahbaz

@Shahbaz:私はC標準のすべてのコピーに精通していません(Cコード(C ++のみ)を記述していないため)。独自の回答を開始するか、C言語を明示的に扱う以下の回答のいずれかを編集することをお勧めします(この下の回答を参照してください)。
マーティンヨーク

17
+1は、ISOワーキンググループ21よりも常に最新のリストを維持するためのものです。
ランディン

5
リストの+1。すべてのドラフトがgitリポジトリgithub.com/cplusplus/draftとして利用できることを追加するだけです。isocpp.org/std/the-standard
pepr

@ShafikYaghmour:彼らはそれを封鎖したようです(これは通常、公式リリースを意味します)。認証が必要なバージョンへのリンクで更新しました(つまり、あなたはそれに対して支払いました)。
マーティンヨーク


26

下書きリンク:

C ++ 11(+編集上の修正):N3337 HTMLPDF

C ++ 14(+編集上の修正):N4140 HTMLPDF

C11 N1570テキスト

C99 N1256

規格の草案は、批准と公開の前にコメントのために回覧されます。

ワーキングドラフトは現在有効な標準ではなく、公開された標準とは厳密には一致しないことに注意してください


「N1169」リンクは、いくつかの不具合レポートを含む4ページのドキュメントに移動します。いかなる意味でも、C ++(またはその他の)標準のドラフトではありません。
Gareth McCaughan、2012年

この回答が気に入ったのは、各メジャーリリースの最新のドラフトが何であるかが明確になるためです。
Ciro Santilli郝海东冠状病六四事件法轮功


12

ISO規格のコストは、適度な金額(PDFバージョンの場合)から少し(本バージョンの場合)です。

ただし、確定されていませんが、通常は下書きとしてオンラインで公開されています。ほとんどの場合、最終バージョンは前回のドラフトと大幅に異ならないため、完璧ではありませんが、問題なく適合します。


7

C99およびC ++ 03標準は、Wileyから書籍形式で入手できます。

さらに、すでに述べたように、将来の標準の草案は委員会のWebサイトから入手できることがよくあります。

C-201xドラフトはN1336として、C ++ 0xドラフトはN3225として利用できます。


1
WileyのC Standardの印刷バージョンについてのメモ:これはC89 / 90ではなく、C99標準です。
マイケルバー

4

ISO CおよびC ++標準は非常に高価です。一方、INCITSは大幅に少ないコストで再発行しています。http://www.techstreet.com/には、30ドルのPDFがあるようです(INCITS / ISO / IEC 14882:2003を検索してください)。

ハードコピー版も入手可能です。Wileyによって発行されたBritish Standards Instituteバージョンを探します。


現在、techstreet.comのPDF形式のC ++ 2003標準は30ドル、C ++ 2011標準は403ドルです。
キース・トンプソン、

Techstreetへのリンクをありがとう。ANSI.orgのWebショップでは、C11標準(「セキュリティ」の理由、つまり正当な理由がないためにクレジットカードを拒否)を私に販売しませんでしたが、Techstreetでの同じ価格の購入(同じカードを使用)はスムーズに、ヒッチ。
Arto Bendiken 2013年

4

実際の標準文書は、最も役立つとは限りません。ほとんどのコンパイラは標準を完全に実装していないため、実際には競合する場合があります。ですから、すでに持っているコンパイラのドキュメントがもっと役立つでしょう。さらに、ドキュメントには、プラットフォーム固有の注意事項と注意事項の注記が含まれます。


24
コンパイラのドキュメントは重要ですが、実装を知るよりも言語を知ることがはるかに重要です。
Spidey

2
実際の標準を使用すると、コンパイラでバグを見つけ、パッチを適用したり、バグレポートを送信したり、IRCルームに入って修正できる人と話したりすることで、標準に準拠できるようになります。
hdante 2013年

3
@hdante-絶対に。標準そのものを理想とする場合、ベンダーに互換性を要求できます。@ / all-ここでの意図は、標準が役に立たないことを言うことではありませんでした(FYI、最初に標準から行くことは、私が過去に取ったアプローチです)、しかし、あなたは実際の世界の開始点も知っている必要があります、うまくいけば、基準に沿ったものになります。
クリスクムラー2013年

6
とにかく、コンパイラのドキュメントは、標準でカバーされているものを除外する傾向があります。
SamB 2015年

4

ANSI C標準(別名C.89)のドラフトのテキストは、オンラインで入手できます。これは、ISO C規格(C.90)で承認される前にANSI委員会によって標準化されたため、セクションの番号は異なります(ANSIセクション2から4は、ISOセクション5から7にほぼ対応しています)。とほぼ同じです。


本当に最後のドラフトですか?私が知っている1つの違いは、このドラフトはtm_secの範囲をに指定することですが[0, 60]、C90(誤って)[0, 61]
Cubbi

@Cubbi、それを個人的に証明することはできないので、文言を修正しました。ありがとう。
jxh 2013

@Cubbi:彼はそれがANSI規格の最後の草案だと言った。ISO WGの誰かが混乱し、1年間に2つのうるう秒が同じで発生するのではないかと思ったようです...または、POSIXからエラーを受け取りました。から、C99に合わせて修正しただけです。
SamB 2015年

K&R 2nd Ed。されている(ANSI C)、ではない実際の最終的な標準に基づいて、その指定しないtm_secです(0, 61)。それはうるう秒のためだと思いました、理にかなっています。
veganaiZe

@veganaiZeうるう秒を考慮して範囲は[0、60]です(それ以外の場合は[0、59]になります)。[0、61]はエラーであり、同じ分に2つのうるう秒が存在する可能性があることを意味します(そうではありません)。
キーストンプソン、

2

以下のようないくつかのコンパイラがない実際の標準が、それはC99に統合されたC94 / 95、または標準追補1と呼ばれるISO C(C89 / 90)の改正がありクランは、あなたは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の背後にある複雑な主題を紹介することはできず、また紹介することもできません。また、リファレンスマニュアルとして元のドキュメントを置き換えることもできません。(それにもかかわらず、それは可能な限り正確であるように努めています、そしてその作者はすべてのエラーまたは省略について聞きたいです。)


-6

http://c0x.coding-guidelines.com/には、検索可能なHTMLベースのバージョンのC標準が含まれています。実際、わずかに変更されたバージョン:

このWebサイトには、N1256の修正バージョンが含まれています。これには、C99から削除された表現(つまり、取り消し線の付いた形式)と、C99に表示されていた表現(つまり、下線付きの形式)が含まれます。


2
ほとんどのページが空白であるため、このWebサイトは役に立ちません。
NisseEngström2014

このウェブサイトは確かに全くがらくたです。
MD XF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.