C言語の言語仕様については、ISO/IEC 9899 で定められています。2018年版が最新ですが、C23と呼ばれる次期バージョンのリリースが近づいてきました。C23について簡単に紹介します。
規格のバージョン
ISO/IEC 9899 は、何回か改訂されています。バージョンについてまとめます。
- C90 1990年に発行されたため、「C90」と呼ばれています。ISO規格がベースとした ANSI規格が1989年に発行されたため、「C89」とも呼ばれることがありますが、「C89」と「C90」は言語仕様として差がありません。多くの人が C言語と認識している多くの仕様がこのバージョンの仕様に基づいていると思われます。
- C99 1999年に発行されました。このバージョンからC++スタイルのコメント、インライン関数などが導入されました。
- C11 2011年に発行されました。スレッド対応などが導入されました。
- C17 2018年に発行されました。2017年に規格発行の準備を予定していたため「C17」と呼ばれています。発行年に合わせて「C18」と呼ぶ場合があるかもしれません。C11 の仕様欠陥の修正が主だと認識されています。
動作しているコンパイラがどのバージョンで動作しているかは、マクロ定数 __STDC_VERSION__ として定義されている long int の値を見れば分かります。
バージョン | __STDC_VERSION__ の値 |
C89/C90 | マクロが定義されていない。 |
C99 | 199901L |
C11 | 201112L |
C17/C18 | 201710L |
C23 の現在(2024年6月28日)
ISO/IEC 9899 のページによると、C23の進捗は、40.99 です。DIS(Draft Internationla Standard)が承認されて、FDIS(Final DIS)への移行中です。
(C24 ではなく)C23と呼んでいるかというと、__STDC_VERSION__ の値が、202311L になる予定だからです。
C23の変化点について、日本語で読める記事としては、WIKIBOOKS でまとめられています。かなり大きく変わることが分かります。
最後に
C90以降に導入された文法仕様について、このブログで、順次紹介しく予定です。
C言語について、理解を深めていきましょう。