1. ホーム
  2. c++

[解決済み] 現在のCまたはC++の標準文書はどこにありますか?

2022-03-24 15:19:56

質問内容

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

特にC言語の標準は、プログラミングフォーラムでの議論の洪水に埋もれてしまうので、ググっても無駄だと感じることがあります。

まず始めに、私が今探しているのはこのようなものなので、オンラインでよい資料はどこにあるのでしょうか。

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

解決方法は?

PDF版規格書

現在 <ストライク 2014年9月1日 2021年9月、CとC++の公式標準文書をPDFで入手できる価格別のベストロケーションは以下のようです。

非PDF電子版規格書

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

(プレーンテキスト版の C++11 ワーキングドラフトをホストしているサイトには、この形式の C++14 ドラフトもいくつかあります)。しかし、いずれも最終作業草案である N4140 のコピーではありません)。

印刷版規格書

規格の印刷物は、各国の標準化団体や ISO しかし、非常に高価である。

上記よりもずっと安価にC90規格のハードコピーを入手したい場合は、安価な中古品として ハーブ・シルト 著書 注釈付きANSI規格 アマゾン この本には、規格の実際のテキスト(役に立つ)と規格に関する解説(あまり役に立たない-いくつかの危険で誤解を招く誤りを含んでいる)が含まれています。

C99とC++03の規格は、WileyやBSI(英国規格協会)から書籍として販売されています。

標準化委員会ドラフト版(無料)

将来の規格のワーキングドラフトは、多くの場合、委員会のウェブサイトから入手できます。

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

C言語の場合

C++の場合。

ただし、規格を決定する会議の直前のバージョンは、通常、最終的な規格の内容に非常に近くなっています。FCD (Final Committee Draft) 版はパスワードで保護されており、入手するには標準化委員会に参加する必要があります。

ドラフト版は最終的な批准版に非常に近いかもしれませんが、この記事の編集者の中には、実際のドキュメントを入手することを強く勧める人もいます。もちろん、お金に困っている学生は、ドラフトを利用すればいい。


規格が批准されてから数ヶ月待つことができるのであれば、規格を探すときに "ISO/IEC" ではなく "INCITS/ISO/IEC" で検索することが鍵となるようです。この記事の編集者の一人は、そうすることで、C11とC++11の標準規格をリーズナブルな価格で見つけることができたのです。例えば、以下のサイトで、"ISO/IEC 9899:2011"ではなく、"INCITS/ISO/IEC 9899:2011" を検索すると、C11とC++11の規格をリーズナブルに見つけることができます。 webstore.ansi.org をクリックすると、リーズナブルなPDF版が表示されます。


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


規格の現在のドラフトは、LaTeXのソースとして以下のサイトで管理されています。 Github . これらのソースは、以下の方法でHTMLに変換することができます。 cxxdraft-htmlgen . 以下のサイトでは、このように生成されたHTMLページを公開しています。

ティム・ソング また、Networking TS と Ranges TS の HTML 版と PDF 版を作成しています。

C標準のPOSIX拡張

POSIX 規格(IEEE 1003.1)に準拠したオペレーティングシステムは、Cコンパイラを含むことを要求しています。このコンパイラは C 規格に準拠していなければならず、さらに POSIX の "System Interfaces" セクションで定義されているさまざまな拡張機能 (たとえば、"C.S.S.S.S.S.S.S.S.") をサポートしていなければなりません。 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 であることが述べられています。

    シェルとユーティリティのセクション(quot;Shell and Utilities") https://mirror.math.princeton.edu/pub/oldlinux/download/c952.pdf ) は、C99 に準拠したコンパイラが存在することだけではなく、コマンドラインから "c99" という名前で呼び出せることを義務付けています。これを実装する一つの方法は、/usr/bin に "c99" という名前のシェルスクリプトを置き、gcc を -std=c99 オプションをコマンドラインパラメーターリストに追加し、競合する規格が指定されないようにブロックします。

    POSIX.1-2001には、2002年と2004年の2回、技術的な修正案がありました。それらは、上記のリンク先のドキュメントには盛り込まれていないと思います。この修正案が含まれたオンラインのHTML版は、以下のサイトにあります。 https://pubs.opengroup.org/onlinepubs/009695399/ - しかし、検索ボックスがうまくいかないことがあるので、Googleで検索するのがベストでしょう。

    最初の正誤表をダウンロードするための有料リンクは次の通りです。 https://standards.ieee.org/standard/1003_1-2001-Cor1-2002.html .

    また、2番目は以下の有料リンクがあります。 https://standards.ieee.org/standard/1003_1-2001-Cor2-2004.html

  • POSIX.1-2008のドラフト版は、以下のサイトにあります。 http://www.open-std.org/jtc1/sc22/open/n4217.pdf .

    POSIX.1-2-2008にも2つの技術的な正誤表があり、後者は2016年付けのものである。この正誤表を取り入れたオンラインのHTML版規格は、以下のサイトにあります。 https://pubs.opengroup.org/onlinepubs/9699919799.2016edition/ - とはいえ、やはりサイト独自の検索ボックスは情報を探すのに向いていない状況もありましたね。

  • POSIX.1-2017のオンラインHTML版は、以下のサイトにあります。 https://pubs.opengroup.org/onlinepubs/9699919799/ - ただし、このサイトの検索ボックスではなく、Googleを使うことをお勧めします。によると オープングループのホームページ IEEE 1003.1-2017 は、1003.1-2008 規格の改訂版であり、2つの技術的修正事項を含む規格を(そのまま)ロールアップしたものである。 Linuxマンページ は、技術的正誤表1および2を適用したPOSIX.1-2008と技術的に同一であると記述しています。したがって、これはメジャーリビジョンではありません。 _POSIX_C_SOURCE マクロを使用します。