394

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

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

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

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

11 に答える 11

514

標準の PDF バージョン

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

標準の非 PDF 電子版

警告: 標準ドラフトのほとんどのコピーは PDF 形式で公開されており、テキスト/HTML が PDF から転記または自動生成された場合、エラーが発生する可能性があります。

(C++11 ワーキング ドラフトのプレーン テキスト バージョンをホストしているサイトには、この形式の C++14 ドラフトもいくつかあります。ただし、最終的なワーキング ドラフト N4140 のコピーはありません。)

標準の印刷版

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

C90 標準のハードコピーが上記よりもはるかに安い価格で必要な場合は、 Herb Schildtの本The Annotated ANSI Standard at Amazonの安価な中古コピーを見つけることができるかもしれません。これには、標準の実際のテキストが含まれています (便利です)。標準に関する解説 (あまり役に立たない - 危険で誤解を招くエラーがいくつか含まれています)。

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

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

将来の規格の作業草案は、多くの場合、委員会の Web サイトから入手できます。

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

C の場合:

C++ の場合:

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

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


規格の批准後数か月待つことができる場合は、規格を探す際に「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 バージョンも管理しています。

C 標準の POSIX 拡張

POSIX標準( IEEE 1003.1) では、準拠するオペレーティング システムに C コンパイラを含める必要があります。このコンパイラは、C 標準に準拠している必要があり、POSIX の「システム インターフェイス」セクションで定義されているさまざまな拡張 (off_tデータ型、<aio.h>ヘッダー、clock_gettime()関数、_POSIX_C_SOURCEマクロなど) もサポートする必要があります。

したがって、特定の関数を調べようとしたときに、「この関数は C 標準ではなく POSIX の一部です」と通知され、オペレーティング システムの標準がコンパイラ機能と言語拡張を義務付けている理由を疑問に思ったことがあると思います。

  • POSIX.1-2001: システム インターフェイス セクションは、https://mirror.math.princeton.edu/pub/oldlinux/download/c951.pdfから別のドキュメントとしてダウンロードできます。セクション 1.7 は、C 標準の関連バージョンが C99 であると述べています。

    「シェルとユーティリティ」セクション ( https://mirror.math.princeton.edu/pub/oldlinux/download/c952.pdf ) では、C99 準拠のコンパイラが存在する必要があるだけでなく、 「c99」という名前のコマンドライン。これを実装する方法の 1 つは、"c99" というシェル スクリプトを /usr/bin に配置することです。このスクリプトは-std=c99、コマンド ライン パラメータのリストにオプションを追加して gcc を呼び出し、競合する標準が指定されるのをブロックします。

    POSIX.1-2001 には 2 つの技術正誤表があり、1 つは 2002 日付、もう 1 つは 2004 日付です。上記のリンクのように、それらがドキュメントに組み込まれていないと思います。https://pubs.opengroup.org/onlinepubs/009695399/に正誤表を組み込んだオンライン HTML バージョンがあります。最善の策。

    https://standards.ieee.org/standard/1003_1-2001-Cor1-2002.htmlに、最初の正誤表をダウンロードするためのペイウォール リンクがあります。

    https://standards.ieee.org/standard/1003_1-2001-Cor2-2004.htmlには、2 番目のペイウォール リンクもあります。

  • http://www.open-std.org/jtc1/sc22/open/n4217.pdfに POSIX.1-2008 のドラフト バージョンがあります。

    POSIX.1-2008 にも 2 つの技術的な正誤表があり、後者は 2016 年のものです。正誤表を組み込んだ標準のオンライン HTML バージョンがhttps://pubs.opengroup.org/onlinepubs/9699919799.2016edition/にあります。 、繰り返しになりますが、サイトの検索ボックスが情報を見つけるのに適していない状況がありました。

  • https://pubs.opengroup.org/onlinepubs/9699919799/に POSIX.1-2017 のオンライン HTML バージョンがあります- ただし、そのサイトの検索ボックスの代わりに Google を使用することをお勧めします。Open Groupの Web サイトによると、「IEEE 1003.1-2017 ... は 1003.1-2008 標準の改訂版であり、2 つの技術的正誤表 (現状のまま) を含む標準をロールアップするためのものです」。Linux のマンページでは、技術正誤表 1 および 2 が適用された POSIX.1-2008 と「技術的に同一」であると説明されています。_POSIX_C_SOURCEしたがって、これはメジャー リビジョンではなく、マクロの値を変更しません。

于 2008-09-17T14:23:17.037 に答える
451

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

ワーキング ドラフト、プログラミング言語 C++ の標準

以下の規格のすべてのドラフト バージョン:
以下はすべて無料でダウンロードできます
2021 日 : N4892 2021年 317 日 : N4885



これは C++20 標準です:
このバージョンでは認証が必要
です 2020-04-08: N4860

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

これは古い C++17 標準です:
このバージョンには認証が必要
です 2017-03-21: N4660

以下の標準のすべてドラフトバージョン:以下すべて 無料
ダウンロードでき ます
。-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 Standard 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

以下の規格のすべて草稿バージョン :以下すべて 無料
でダウンロードでき ます 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 年 8 月 6 日: N2369
2007 年 6 月25 日: N2315 2007 年 5月 7 日 : N2284 2006 年 11 月 3 日 : N2134 2006 年4 月 21 日 : N2009 -04-27: N1804




これは古いC ++03 標準です:以下の すべて のバージョン で
認証が必要 です-13: N1316ドラフト拡張技術正誤 表 1997-00-00: N1117 ドラフト拡張技術正誤表




以下の標準のすべての草案バージョン: 以下は
すべて無料でダウンロード可能
です 。

その他の興味深い論文:

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

于 2011-01-11T02:02:48.263 に答える
64

C99 はオンラインで入手できますwww.open-std.orgから引用:

公開されている標準の最新バージョンは、C99 + TC1 + TC2 + TC3 を組み合わせたWG14 N1256で、日付は 2007-09-07 です。これは WG14 ワーキング ペーパーですが、発行時の統合基準を反映しています。

于 2008-09-17T15:33:15.840 に答える
26

下書きリンク:

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

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

C11 N1570 (本文)

C99 N1256

規格の草案は、承認および公開前にコメントを求めるために回覧されます。

作業草案は現在有効な標準ではなく、公開された標準とまったく同じではないことに注意してください。

于 2012-05-05T18:53:45.543 に答える
12

C++0xのドラフト国際標準が役立つ場合があります。

于 2008-09-17T10:57:08.700 に答える
11

ISO規格は、中程度の金額(PDFバージョンの場合)からもう少し高い金額(本バージョンの場合)まで、費用がかかります。

ただし、最終的なものではありませんが、通常、ドラフトとしてオンラインで見つけることができます。ほとんどの場合、最終バージョンは前回のドラフトと大きく異なることはないため、完璧ではありませんが、問題なく適合します。

于 2008-09-17T10:10:45.490 に答える
6

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

さらに、すでに述べたように、将来の標準のワーキング ドラフトは、多くの場合、委員会の Web サイトから入手できます。

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

于 2008-09-17T13:57:52.667 に答える
6

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

于 2013-08-16T21:52:02.307 に答える
3

ISO C および C++ 標準は非常に高価です。一方、INCITS はそれらをはるかに安い価格で再発行しています。http://www.techstreet.com/には 30 ドルで PDF があるようです (INCITS/ISO/IEC 14882:2003 を検索してください)。

ハードコピー版もあります。Wiley が発行する英国規格協会のバージョンを探してください。

于 2008-09-17T10:18:04.537 に答える
2

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

于 2008-09-17T15:38:42.003 に答える
1

実際の標準ではありませんが、ISO C (C89/90) には、C94/95 と呼ばれる修正版 (Normative Addendum 1) があります。これは C99 に統合されましたが、Clang-std=c94などの一部のコンパイラではコマンド ラインで指定できます。ISO/IEC 9899:1990/Amd 1:1995 は、SAI GLOBAL (PDF またはハード コピー) から高額で購入できます。

ドキュメントの概要は、ここで確認できます。

1990 年に ANSI C 規格 (当時のドラフト) が国際規格の採用を検討されていたとき、国際化の問題に対処していないという理由で、いくつかの反対意見がありました。規格はすでに数年かけて作成されていたため、基礎を提供するためにいくつかの変更が行われることが合意されました (たとえば、7.10.7 節の機能が追加されました)。標準の適切な国際化。この作業は、規範補遺 1 で最高潮に達しました。

規範的補遺 1 は、国際文字セットの制限と約束の両方に対する C の反応を体現しています。ダイグラフとヘッダーは、たとえば { または } 文字を使用せずに、ISO 646 の各国語版で記述された C プログラムの外観を改善することを目的としていました。対極にある機能は、古い標準のほとんど適切な基盤に接続され、ワイド文字とマルチバイト文字列を処理するための完全で一貫したユーティリティ セットに拡張されます。

この文書は、規範的補遺 1 を要約したものです。この文書は、既に規格に精通している読者に迅速に通知することを目的としています。NA1 の背後にある複雑な主題を紹介することはできませんし、できないし、リファレンス マニュアルとして元のドキュメントを置き換えることもできません。(とはいえ、可能な限り正確であるように努めており、作者は間違いや脱落について知りたいと思っています。)

于 2014-12-08T13:36:48.893 に答える