C23 (C言語)のソースを表示
←
C23 (C言語)
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{pathnav|C言語}} {{翻訳直後|1={{revision|:en:C23 (C standard revision)|1254909966|英語版 "C23 (C standard revision)" 2024年11月2日 (土) 08:03 (UTC)}}|date=2024-11}} {{要改訳|date=2024-11}} '''C23'''('''ISO/IEC 9899:2024''')とは、[[C言語]]の現在の[[オープン標準]]であり、{{仮リンク|C17 (C言語)|en|C17 (C standard revision)|label=C17}}(ISO/IEC 9899:2018)の後継規格である<ref name="HistoryOfC">{{cite web |title=History of C |url=https://en.cppreference.com/w/c/language/history |website=cppreference.com |archive-url=https://web.archive.org/web/20221019191546/https://en.cppreference.com/w/c/language/history |archive-date=October 19, 2022 |date=2022-06-27 |url-status=live |access-date=2024-11-10}}</ref>。2016年にC2xとして非公式に策定が開始され<ref name="C2xCharter">{{cite web |title=WG14-N2086: C2x Charter |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2086.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221222213708/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2086.htm |archive-date=December 22, 2022 |date=2016-09-20 |url-status=live |access-date=2024-11-10}}</ref>、2024年10月31日に発行された<ref>{{cite web |title=ISO/IEC PRF 9899 |url=https://www.iso.org/standard/82075.html |website=iso.org |archive-url=https://web.archive.org/web/20240919185914/https://www.iso.org/standard/82075.html |archive-date=September 19, 2024 |url-status=live |access-date=2024-11-10}}</ref>。発行された規格に最も近い自由に入手できる草案はN3220である([[#利用可能な文書]]を参照)<ref name="N3220"></ref>。C2x草案の最初のWG14会議は2019年10月に開催され<ref name="N2437">{{cite web |title=WG14-N2437: Agenda for October 2019 |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2437.htm |website=open-std.org |archive-url=https://web.archive.org/web/20210305073426/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2437.htm |archive-date=March 5, 2021 |date=2019-10-21 |url-status=live |access-date=2024-11-10}}</ref>、[[新型コロナウイルス感染症の世界的流行 (2019年-)|新型コロナウイルス感染症の世界的流行]]によって2020年は仮想リモート会議として開催され、その後、2024年まで様々な遠隔会議が継続的に開催された。 C23では、{{code|lang=c|__STDC_VERSION__}}の値が{{code|lang=c|201710L}}から{{code|lang=c|202311L}}に変更される。一般名の「C17」や「C23」はISO規格識別子の年(9899:2018と9899:2024)ではなく、規格発行前に固定されるこれらの値を反映している。 == 機能 == C23の最新の作業草案に統合された変更点は以下の通りである<ref name="N3096">{{cite web |title=WG14-N3096: Draft for ISO/IEC 9899:2024 |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20230402172459/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf |archive-date=April 2, 2023 |date=April 1, 2023 |url-status=live |access-date=2024-11-10}}</ref>。 === 標準ライブラリ === ==== 新規関数 ==== * <code><{{仮リンク|string.h|en|string.h}}></code>に{{code|lang=c|memset_explicit()}}関数を追加<ref name="N2897">{{cite web |title=WG14-N2897: memset_explicit() |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2897.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221025074215/https://open-std.org/jtc1/sc22/wg14/www/docs/n2897.htm |archive-date=October 25, 2022 |date=2021-12-27 |url-status=live |access-date=2024-11-10}}</ref>。機密データを消去する目的で、最適化に関係なく常にメモリ書き込み (store) を実行する必要がある場面で使用される。 * {{code|lang=c|<string.h>}}に<code>{{仮リンク|memccpy|en|memccpy}}()</code>関数を追加<ref name="N2349">{{cite web |title=WG14-N2349: Toward more efficient string copying and concatenation |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2349.htm |website=open-std.org |archive-url=https://web.archive.org/web/20220930092258/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2349.htm |archive-date=September 30, 2022 |date=2019-03-18 |url-status=live |access-date=2024-11-10}}</ref>。文字列を効率的に連結する。[[POSIX]]と[[SVID]]のC拡張と同様である。 * {{code|lang=c|<string.h>}}に<code>{{仮リンク|strdup|en|strdup}}()</code>および{{code|lang=c|strndup()}}関数を追加<ref name="N2353">{{cite web |title=WG14-N2353: strdup() and strndup() |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2353.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224063709/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2353.htm |archive-date=December 24, 2022 |date=2019-03-18 |url-status=live |access-date=2024-11-10}}</ref>。文字列の複製を割り当てる。POSIXとSVIDのC拡張と同様である。 * ポインタのバイトアライメントを決定するために<code><{{仮リンク|stdlib.h|en|stdlib.h}}></code>に{{code|lang=c|memalignment()}}関数を追加<ref name="N2974">{{cite web |title=WG14-N2974: Queryable pointer alignment |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2974.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221013182240/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n2974.pdf |archive-date=October 13, 2022 |date=2022-04-15 |url-status=live |access-date=2024-11-10}}</ref>。 * 新たなヘッダの<code><[[stdbit.h]]></code>を追加し、多くの整数型でビット関連の操作をするための関数、マクロ、データ型を定義。全て<code>stdc_</code>で始まるので古いコードやサードパーティのライブラリとの競合を最小限に抑えることができる<ref name="N3022">{{cite web |title=WG14-N3022: Modern Bit Utilities |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3022.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224194734/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3022.htm |archive-date=December 24, 2022 |date=2022-07-06 |url-status=live |access-date=2024-11-10}}</ref>。 ** 以下の<code>*</code>は特定の整数型向けの関数ではこれを{{code|lang=c|uc}}、{{code|lang=c|us}}、{{code|lang=c|ui}}、{{code|lang=c|ul}}、{{code|lang=c|ull}}のいずれかに置き換え、ジェネリック関数ではこれを除去して読む<ref name="N3022"/>。 ** ビットで表現した場合の1または0の個数を数える{{code|lang=c|stdc_count_ones*()}}および{{code|lang=c|stdc_count_zeros*()}}関数を追加<ref name="N3022"/>。 ** ビットで表現した場合の先頭の1または0の個数を数える{{code|lang=c|stdc_leading_ones*()}}および{{code|lang=c|stdc_leading_zeros*()}}関数を追加<ref name="N3022"/>。 ** ビットで表現した場合の末尾の1または0の個数を数える{{code|lang=c|stdc_trailing_ones*()}}および{{code|lang=c|stdc_trailing_zeros*()}}関数を追加<ref name="N3022"/>。 ** ビットで表現した場合に最上位ビットから数えて最初に1または0が現れる位置を探す{{code|lang=c|stdc_first_leading_one*()}}および{{code|lang=c|stdc_first_leading_zero*()}}関数を追加<ref name="N3022"/>。 ** ビットで表現した場合に最下位ビットから数えて最初に1または0が現れる位置を探す{{code|lang=c|stdc_first_trailing_one*()}}および{{code|lang=c|stdc_first_trailing_zero*()}}関数を追加<ref name="N3022"/>。 ** 値が正しく2の冪乗であるかを確認する(単一のビットだけが1の場合に{{code|lang=c|true}}を返す){{code|lang=c|stdc_has_single_bit*()}}関数を追加<ref name="N3022"/>。 ** 与えられた値より大きくない最大の2の累乗を計算する{{code|lang=c|stdc_bit_floor*()}}関数を追加<ref name="N3022"/>。 ** 与えられた値より小さくない最小の2の累乗を計算する{{code|lang=c|stdc_bit_ceil*()}}関数を追加<ref name="N3022"/>。 ** 与えられた値を表すのに必要なビット数を調べる{{code|lang=c|stdc_bit_width*()}}関数を追加<ref name="N3022"/>。 * <code><[[time.h]]></code>に[[glibc]]と[[musl]]にあるような時間を表す構造体を{{code|lang=c|time_t}}に変換できる{{code|lang=c|timegm()}}関数を追加する<ref name="N2833">{{cite web |title=WG14-N2833: Add timegm() as non-optional part of time.h |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2833.htm |website=open-std.org |archive-url=https://web.archive.org/web/20211201062452/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2833.htm |archive-date=December 1, 2021 |date=2021-10-07 |url-status=live |access-date=2024-11-10}}</ref>。 * <code><{{仮リンク|math.h|en|math.h}}></code>にIEEE 754-2019の推奨に基づく<math>\pi x</math>単位で動作する三角関数や<code>exp10</code>などの関数を追加<ref>See N3096 § B.11 for a useful overview. The functions were added in separate documents: N2488, its updated versions, and its refs.</ref>。 ==== 既存の関数 ==== * {{code|lang=c|printf()}}とそれに類似する関数に2進数向けの変換指定子の{{code|lang=c|%b}}を追加<ref name="N2630">{{cite web |title=WG14-N2630: formatted input/output of binary integer numbers |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2630.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221214154315/https://open-std.org/JTC1/SC22/WG14/www/docs/n2630.pdf |archive-date=December 14, 2022 |date=2021-01-01 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|scanf()}}とそれに類似する関数に2進数向けの変換指定子の{{code|lang=c|%b}}を追加<ref name="N2630"/>。 * {{code|lang=c|strtol()}}と{{code|lang=c|wcstol()}}とそれらに類似する関数で接頭辞に{{code|lang=c|0b}}または{{code|lang=c|0B}}を持つ文字列に対応<ref name="N2630"/>。 * <code>{{仮リンク|bsearch|en|bsearch}}()</code>、<code>{{仮リンク|bsearch|en|bsearch|label=bsearch_s}}()</code>、<code>{{仮リンク|memchr|en|memchr}}()</code>、<code>{{仮リンク|strchr|en|strchr}}()</code>、<code>{{仮リンク|strpbrk|en|strpbrk}}()</code>、<code>{{仮リンク|strrchr|en|strrchr}}()</code>、<code>{{仮リンク|strstr|en|strstr}}()</code>とそれらのワイド文字対応版の<code>{{仮リンク|wmemchr|en|wmemchr}}()</code>、<code>{{仮リンク|wcschr|en|wcschr}}()</code>、<code>{{仮リンク|wcspbrk|en|wcspbrk}}()</code>、<code>{{仮リンク|wcsrchr|en|wcsrchr}}()</code>、<code>{{仮リンク|wcsstr|en|wcsstr}}()</code>でconst修飾オブジェクトが渡された場合にそれを返すようにする<ref name="N3020">{{cite web |title=WG14-N3020: Qualifier-preserving standard library functions |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3020.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221013190826/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n3020.pdf |archive-date=October 13, 2022 |date=2022-06-13 |url-status=live |access-date=2024-11-10}}</ref>。 === プリプロセッサ === * {{code|lang=c|#elifdef}}および{{code|lang=c|#elifndef}}[[ディレクティブ]]を追加<ref name="N2645">{{cite web |title=WG14-N2645: Add support for preprocessing directives #elifdef and #elifndef |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2645.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2645.pdf |archive-date=November 28, 2022 |date=2020-01-25 |url-status=live |access-date=2024-11-10}}</ref>。これらは基本的に{{code|lang=c|#elif defined}}と{{code|lang=c|#elif !defined}}と同じである。これらはどちらも{{nowrap|{{仮リンク|C++23|en|C++23}}}}と[[GNU Compiler Collection|GCC]] 12に追加された<ref>{{cite web |title=GCC 12 Adds Support For New #elifdef #elifndef Directives |url=https://www.phoronix.com/news/GCC-12-elifdef-elifndef |website=phoronix |archive-url=https://web.archive.org/web/20221227050002/https://www.phoronix.com/news/GCC-12-elifdef-elifndef |archive-date=December 27, 2022 |date=May 12, 2021 |url-status=live |access-date=2024-11-10}}</ref>。 * バイナリリソースを埋め込むための{{code|lang=c|#embed}}ディレクティブとプリプロセッサディレクティブによってリソースの存在を確認できるようにする{{code|lang=c|__has_embed}}を追加<ref name="N3017">{{cite web |title=WG14-N3017: #embed - a scannable, tooling-friendly binary resource inclusion mechanism |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3017.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224045304/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3017.htm |archive-date=December 24, 2022 |date=2022-06-27 |url-status=live |access-date=2024-11-10}}</ref>。 * 診断用の{{code|lang=c|#warning}}ディレクティブを追加<ref name="N2686">{{cite web |title=WG14-N2686: #warning |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2686.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2686.pdf |archive-date=November 28, 2022 |date=2022-07-22 |url-status=live |access-date=2024-11-10}}</ref>。 * ヘッダの存在をプリプロセッサディレクティブで確認できるようにする{{code|lang=c|__has_include}}を追加<ref name="N2799">{{cite web |title=WG14-N2799: __has_include for C |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2799.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221224103617/https://open-std.org/JTC1/SC22/WG14/www/docs/n2799.pdf |archive-date=December 24, 2022 |date=2021-08-30 |url-status=live |access-date=2024-11-10}}</ref>。 * 属性の存在をプリプロセッサディレクティブで確認できるようにする{{code|lang=c|__has_c_attribute}}を追加<ref name="N2553">{{cite web |title=WG14-N2553: Querying attribute support |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2553.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221014221314/https://open-std.org/JTC1/SC22/WG14/www/docs/n2553.pdf |archive-date=October 14, 2022 |date=2020-08-04 |url-status=live |access-date=2024-11-10}}</ref>(新たな属性機能については[[#C++との互換性]]を参照)。 * {{code|lang=c|__VA_OPT__}}マクロを追加。これはマクロのパラメータとして受け取った[[可変長引数]]が空でない場合に置換するトークンを指定する<ref name="N3033">{{cite web |title=WG14-N3033: Comma omission and comma deletion |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3033.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221227031727/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3033.htm |archive-date=December 27, 2022 |date=2022-07-20 |url-status=live |access-date=2024-11-10}}</ref>。 === データ型 === * [[ヌルポインタ]]型の<code>{{仮リンク|nullptr_t|en|nullptr_t}}</code>を追加<ref name="N3042"/>。 * 正確なビット単位の数値を表す{{code|lang=c|_BitInt(N)}}および{{code|lang=c|unsigned _BitInt(N)}}型を追加。最大ビット幅を表す{{code|lang=c|BITINT_MAXWIDTH}}マクロを追加<ref name="N2763">{{cite web |title=WG14-N2763: Adding a Fundamental Type for N-bit integers |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2763.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221227055250/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2763.pdf |archive-date=December 27, 2022 |date=2021-06-21 |url-status=live |access-date=2024-11-10}}</ref><ref name="N3035">{{cite web |title=WG14-N3035: _BitInt Fixes |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3035.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221013182206/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n3035.pdf |archive-date=October 13, 2022 |date=2022-07-21 |url-status=live |access-date=2024-11-10}}</ref>。 * オーバーフローを検査する整数演算用の{{code|lang=c|ckd_add()}}、{{code|lang=c|ckd_sub()}}、{{code|lang=c|ckd_mul()}}マクロを追加<ref name="N2867">{{cite web |title=WG14-N2867: Checked N-Bit Integers |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2867.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221214154907/https://open-std.org/JTC1/SC22/WG14/www/docs/n2867.pdf |archive-date=December 14, 2022 |date=2021-11-28 |url-status=live |access-date=2024-11-10}}</ref>。 * 可変変更型(スタック上に割り当てられる{{仮リンク|自動変数|en|Automatic variable}}である[[可変長配列]]は除く)が必須機能になる<ref name="N2778">{{cite web |title=WG14-N2778: Variably-Modified Types |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2778.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221222053411/https://open-std.org/jtc1/sc22/wg14/www/docs/n2778.pdf |archive-date=December 22, 2022 |date=2021-07-11 |url-status=live |access-date=2024-11-10}}</ref>。 * 配列での<code>{{仮リンク|const (プログラミング)|en|const (computer programming)|label=const}}</code>の使用に対する対応の向上<ref name="N2607">{{cite web |title=WG14-N2607: Compatibility of Pointers to Arrays with Qualifiers |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2607.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221013182946/https://www.open-std.org/jtc1/sc22/WG14/www/docs/n2607.pdf |archive-date=October 13, 2022 |date=2020-10-31 |url-status=live |access-date=2024-11-10}}</ref>。 * <code>{{仮リンク|typeof|en|typeof}}(...)</code>演算子が標準化<ref name="N2899">{{cite web |title=WG14-N2899: Not-so-magic - typeof for C |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2899.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224044528/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2899.htm |archive-date=December 24, 2022 |date=2022-01-21 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|auto}}キーワードの意味は、[[型推論]]をもたらすように変更されたが、一方で型と同時に指定された場合、従来の古い意味である{{仮リンク|C言語の構文|en|C syntax|label=記憶域クラス指定子}}となる機能も引き続き保持している。[[C++]]とは異なり、C23では変数宣言でのみ型推論が許可されている(関数のパラメータや戻り値の型に対しては認められない)<ref name="N3007">{{cite web |title=WG14-N3007: Type inference for object definitions |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3007.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224105654/https://open-std.org/JTC1/SC22/WG14/www/docs/n3007.htm |archive-date=December 24, 2022 |date=2022-06-10 |url-status=live |access-date=2024-11-10}}</ref>。 * 構造体、共用体、列挙型の互換性ルールが変更され、同じタグを持つ互換性のある型の再宣言が可能となった<ref name="N3037">{{cite web |title=WG14-N3037: Improved Rules for Tag Compatibility (updates N3032) |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3037.pdf |access-date=2024-11-10}}</ref>。 * 固定長整数型の幅が{{code|lang=c|intmax_t}}を超える可能性があるようになった(N2888)<ref name="shep2207">{{cite web |title=C23 is Finished: Here is What is on the Menu |url=https://thephd.dev/c23-is-coming-here-is-what-is-on-the-menu |website=The Pasture |language=en |date=31 July 2022 |access-date=2024-11-10}}<!-- The author is a member of WG14, the working group responsible for C. They do not use a traditional-sounding name in dealing with the WG, so there is no name to cite; in N2900, one of their papers, the name is listed as "Shepherd (Shepherd's Oasis LLC)". --></ref>。 === 定数 === * [[C++11#ヌルポインタ|{{code|lang=c|nullptr}}]]定数を{{code|lang=c|nullptr_t}}型に追加<ref name="N3042">{{cite web |title=WR14-N3042: Introduce the nullptr constant |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n3042.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224043228/https://open-std.org/JTC1/SC22/WG14/www/docs/n3042.htm |archive-date=December 24, 2022 |date=2022-07-22 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|_BitInt(N)}}および{{code|lang=c|unsigned _BitInt(N)}}型に{{code|lang=c|wb}}および{{code|lang=c|uwb}}整数リテラル接尾辞を追加<ref name="N2775">{{cite web |title=WG14-N2775: Literal suffixes for bit-precise integers |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221227014728/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2775.pdf |archive-date=December 27, 2022 |date=2021-07-13 |url-status=live |access-date=2024-11-10}}</ref>。例えば、{{code|lang=c|6uwb}}は{{code|lang=c|unsigned _BitInt(3)}}を表し、{{code|lang=c|-6wb}}は値を表す3つのビットと符号を表す1つのビットを持つ{{code|lang=c|signed _BitInt(4)}}を表す。 * {{仮リンク|整数リテラル|en|Integer literal}}に2進数を表す{{code|lang=c|0b}}および{{code|lang=c|0B}}接頭辞を追加<ref name="N2549">{{cite web |title=WG14-N2549: Allow for binary integer constants |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221222192818/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2549.pdf |archive-date=December 22, 2022 |date=2020-07-30 |url-status=live |access-date=2024-11-10}}</ref>。例えば、{{code|lang=c|0b10101010}}は16進数を表す整数リテラルの{{code|lang=c|0xAA}}と等しい。 * 数値リテラルの区切り文字として{{code|lang=c|'}}を追加<ref name="N2626">{{cite web |title=WG14-N2626: Digit separators |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2626.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221219215425/https://open-std.org/JTC1/SC22/WG14/www/docs/n2626.pdf |archive-date=December 19, 2022 |date=2020-12-15 |url-status=live |access-date=2024-11-10}}</ref>。例えば、{{code|lang=c|0xFE'DC'BA'98}}は{{code|lang=c|0xFEDCBA98}}と等しく、{{code|lang=c|299'792'458}}は[[光速|{{code|lang=c|299792458}}]]と等しく、{{code|lang=c|1.414'213'562}}は[[2の平方根|{{code|lang=c|1.414213562}}]]と等しい。 * [[列挙型|{{code|lang=c|enum}}]]の基底型 (underlying type) を指定できる機能を追加<ref name="N3030">{{cite web |title=WG14-N3030: Enhancements to Enumerations |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n3030.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221126132709/https://open-std.org/JTC1/SC22/WG14/www/docs/n3030.htm |archive-date=November 26, 2022 |date=2022-07-19 |url-status=live |access-date=2024-11-10}}</ref>。 * 基底型が省略された{{code|lang=c|enum}}<!-- 英語版Wikipediaの原文では"enums with no fixed underlying type"となっているが、enumにunderlying typeが明示的に指定されていないことを"not fixed"と呼ぶ。このfixedは「固定された」というよりは「確定された」という意味。 -->に、{{code|lang=c|int}}で表現できない値を格納できるようにする<ref name="N3029">{{cite web |title=WG14-N3029: Improved Normal Enumerations |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n3029.htm |website=open-std.org |archive-url=https://web.archive.org/web/20230129180341/https://open-std.org/JTC1/SC22/WG14/www/docs/n3029.htm |archive-date=January 29, 2023 |date=2022-07-19 |url-status=live |access-date=2024-11-10}}</ref>。 === キーワード === * {{code|lang=c|true}}および{{code|lang=c|false}}キーワードを追加<ref name="N2935">{{cite web |title=WG14-N2935: Make false and true first-class language features |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2935.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221121123457/https://open-std.org/JTC1/SC22/WG14/www/docs/n2935.pdf |archive-date=November 21, 2022 |date=2022-02-15 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|alignas}}、{{code|lang=c|alignof}}、{{code|lang=c|bool}}、{{code|lang=c|static_assert}}、[[スレッド局所記憶|{{code|lang=c|thread_local}}]]キーワードを追加。従来の{{code|lang=c|_Alignas}}、{{code|lang=c|_Alignof}}、{{code|lang=c|_Bool}}、{{code|lang=c|_Static_assert}}、{{code|lang=c|_Thread_local}}キーワードはこれらの新しいキーワードの別表記になる<ref name="N2934">{{cite web |title=WG14-N2934: Revise spelling of keywords |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2934.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221224132455/https://open-std.org/JTC1/SC22/WG14/www/docs/n2934.pdf |archive-date=December 24, 2022 |date=2022-02-15 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|_BitInt}}キーワードを追加([[#データ型]]を参照)。 * {{code|lang=c|typeof}}および{{code|lang=c|typeof_unqual}}キーワードを追加([[#データ型]]を参照)。 * {{code|lang=c|nullptr}}キーワードを追加([[#定数]]を参照)。 * {{code|lang=c|constexpr}}キーワードを追加([[#その他の機能]]を参照)。 * オプショナルな{{仮リンク|十進浮動小数点数|en|Decimal floating point}}演算用の{{code|lang=c|_Decimal32}}、{{code|lang=c|_Decimal64}}、{{code|lang=c|_Decimal128}}キーワードを追加([[#その他の機能]]を参照)。 === 構文 === * [[ラベル (プログラミング)|ラベル]]を{{仮リンク|宣言 (プログラミング)|en|Declaration (computer programming)|label=宣言}}の前と[[文 (プログラミング)|複合文]]の末尾に配置できるようになる<ref name="N2508">{{cite web |title=WG14-N2508: Free Positioning of Labels Inside Compound Statements |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221227183107/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2508.pdf |archive-date=December 27, 2022 |date=2020-03-28 |url-status=live |access-date=2024-11-10}}</ref>。 * 関数定義でパラメータ名を省略可能に<ref name="N2510">{{cite web |title=WG14-N2510: Allowing unnamed parameters in a function definition |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2510.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221224075948/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2510.pdf |archive-date=December 24, 2022 |date=2020-04-09 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|{{(}}{{)}}}}によるゼロ値初期化(可変長配列の初期化を含む)<ref name="N2900">{{cite web |title=WG14-N2900: Consistent, Warningless, and Intuitive Initialization with {} |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2900.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221227181452/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2900.htm |archive-date=December 27, 2022 |date=2022-01-01 |url-status=live |access-date=2024-11-10}}</ref>。 * [[可変長引数|可変長引数関数]]は省略記号({{code|lang=c|...}})の前に名前付きパラメータを必要としなくなり、{{code|lang=c|va_start}}マクロは2番目の引数を必要としなくなり、最初の引数の後に引数があっても評価しないようになった<ref name="N2975">{{cite web |title=WG14-N2975: Relax requirements for variadic parameter lists |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2975.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2975.pdf |archive-date=November 28, 2022 |date=2022-04-15 |url-status=live |access-date=2024-11-10}}</ref>。 * [[C++11]]形式の二重角括弧({{code|lang=c|{{!((}}{{))!}}}})を使用する属性構文を追加<ref name="N2335">{{cite web |title=WG14-N2335: Attributes in C |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221026060722/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2335.pdf |archive-date=October 26, 2022 |date=2019-03-09 |url-status=live |access-date=2024-11-10}}</ref>。C23ではC++にはない以下の独自の属性が追加される: ** {{code|lang=c|{{brackets|unsequenced}}}}属性<ref name=":0">{{Cite web |title=Unsequenced functions |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n2956.htm |access-date=2024-07-18 |website=open-std.org}}</ref>は引数が同じならば常に同じ結果を返し、他のデータに依存関係を持たない関数型に対して付与する。 ** {{code|lang=c|{{brackets|reproducible}}}}属性<ref name=":0" />は{{code|lang=c|{{brackets|unsequenced}}}}属性に似ているが関数の呼び出し順序も重要である場合に付与する。 * [[C++17]]との互換性のために<code>{{仮リンク|assert.h|en|assert.h|label=_Static_assert}}</code>に単一引数を追加<ref name="N2265">{{cite web |title=WG14-N2265: Harmonizing static_assert with C++ |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n2265.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20230328064918/https://open-std.org/JTC1/SC22/WG14/www/docs/n2265.pdf |archive-date=March 28, 2023 |date=2018-07-06 |url-status=live |access-date=2024-11-10}}</ref>。 * プロトタイプ宣言で引数がない関数(例えば{{code|lang=c|void foo()}})は、引数を取らない関数であるとして扱われる([[#廃止された機能]]を参照)。 === C++との互換性 === * 宣言の前の[[ラベル (プログラミング)|ラベル]]、関数定義でのパラメータ名の省略の許容、{{code|lang=c|{{(}}{{)}}}}によるゼロ値初期化、可変長引数関数での名前付きパラメータのオプショナル化、[[C++11]]形式の属性、<code>{{仮リンク|assert.h|en|assert.h|label=_Static_assert}}</code>([[#構文]]を参照)などの様々な構文の変更によりC++との互換性が向上した。複合文の末尾でのラベルについてはC23の互換性のために{{仮リンク|C++23|en|C++23}}で許可されるように変更された<ref>{{cite web |url=https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2324r2.pdf |title=Labels at the end of compound statements (C compatibility) |date=2022-01-13 |access-date=2024-11-10}}</ref>。 * C++形式の属性を追加([[#構文]]を参照)。[[C++11]]との互換性のために{{code|lang=c|{{brackets|deprecated}}}}<ref name="N2334">{{cite web |title=WG14-N2334: The deprecated attribute |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2334.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221019131835/https://open-std.org/JTC1/SC22/WG14/www/docs/n2334.pdf |archive-date=October 19, 2022 |date=2019-01-22 |url-status=live |access-date=2024-11-10}}</ref>、{{code|lang=c|{{brackets|fallthrough}}}}<ref name="N2408">{{cite web |title=WG14-N2408: The fallthrough attribute |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2408.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221225070709/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2408.pdf |archive-date=December 25, 2022 |date=2019-08-11 |url-status=live |access-date=2024-11-10}}</ref>、{{code|lang=c|{{brackets|maybe_unused}}}}<ref name="N2270">{{cite web |title=WG14-N2270: The maybe_unused attribute |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2270.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221225070836/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2270.pdf |archive-date=December 25, 2022 |date=2018-07-06 |url-status=live |access-date=2024-11-10}}</ref>、{{code|lang=c|{{brackets|nodiscard}}}}<ref name="N2267">{{cite web |title=WG14-N2267: The nodiscard attribute |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2267.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221019131846/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2267.pdf |archive-date=October 19, 2022 |date=2018-07-06 |url-status=live |access-date=2024-11-10}}</ref>、{{code|lang=c|{{brackets|noreturn}}}}属性が追加され<ref name="N2554">{{cite web |title=WG14-N2554: Minor attribute wording cleanups |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2554.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2554.pdf |archive-date=November 28, 2022 |date=2020-08-04 |url-status=live |access-date=2024-11-10}}</ref>、[[C11 (C言語)|C11]]で導入された{{code|lang=c|_Noreturn}}、{{code|lang=c|noreturn}}、{{code|lang=c|<stdnoreturn.h>}}ヘッダは非推奨となった<ref name="N2764">{{cite web |title=WG14-N2764: The noreturn attribute |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n2764.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221225063437/https://open-std.org/JTC1/SC22/WG14/www/docs/n2764.pdf |archive-date=December 25, 2022 |date=2021-06-21 |url-status=live |access-date=2024-11-10}}</ref>。{{仮リンク|C++23|en|C++23}}との互換性のために重複する属性は許可されれている<ref name="N2557">{{cite web |title=WG14-N2557: Allow Duplicate Attributes |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2557.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221128133337/https://open-std.org/JTC1/SC22/WG14/www/docs/n2557.pdf |archive-date=November 28, 2022 |date=2020-09-01 |url-status=live |access-date=2024-11-10}}</ref>。全ての標準属性は二重アンダースコアで囲むことができる(例えば、{{code|lang=c|{{brackets|__deprecated__}}}}は{{code|lang=c|{{brackets|deprecated}}}}と同じ)。 * [[C++17]]との互換性のために[[UTF-8]]で符号化された{{仮リンク|文字リテラル|en|Character literal}}を表すための{{code|lang=c|u8}}接頭辞を追加<ref name="N2418">{{cite web |title=WG14-N2418: Adding the u8 character prefix |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20230113210023/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2418.pdf |archive-date=January 13, 2023 |date=2019-09-02 |url-status=live |access-date=2024-11-10}}</ref><ref>{{Cite web |title=What is the point of the UTF-8 character literals proposed for C++17? |url=https://stackoverflow.com/questions/31970111/what-is-the-point-of-the-utf-8-character-literals-proposed-for-c17#31970297 |website=Stack Overflow |access-date=2024-11-10 |language=en}}</ref>。 * {{仮リンク|C++23|en|C++23}}との互換性のために{{code|lang=c|#elifdef}}および{{code|lang=c|#elifndef}}ディレクティブを追加<ref name="N2645"/>([[#プリプロセッサ]]を参照)。 === その他の機能 === * 浮動小数点数演算のために[[IEEE 754]]の現行版であるISO/IEC 60559:2020に対応し、拡張された二進浮動小数点数演算とオプショナルの十進浮動小数点数演算に対応する<ref name="N2341">{{cite web |title=WG14-N2341: ISO/IEC TS 18661-2 - Floating-point extensions for C - Part 2: Decimal floating-point arithmetic |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2341.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221121122559/https://open-std.org/JTC1/SC22/WG14/www/docs/n2341.pdf |archive-date=November 21, 2022 |date=February 26, 2019 |url-status=live |access-date=2024-11-10}}</ref><ref name="N2601">{{cite web |title=WG14-N2601: Annex X - IEC 60559 interchange and extended types |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2601.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221014221322/https://open-std.org/JTC1/SC22/WG14/www/docs/n2601.pdf |archive-date=October 14, 2022 |date=October 15, 2020 |url-status=live |access-date=2024-11-10}}</ref>。 * C++のそれとは異なり、[[C++11#一般化された定数式|{{code|lang=c|constexpr}}]]指定子は定数宣言でのみ使用でき、{{code|lang=c|constexpr}}関数は認められていない<ref name="N3018">{{cite web |title=WG14-N3018: The constexpr specifier for object definitions |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3018.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221224074302/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3018.htm |archive-date=December 24, 2022 |date=2022-07-06 |url-status=live |access-date=2024-11-10}}</ref>。 * [[UTF-8]]で符号化されたデータを格納するための{{code|lang=c|char8_t}}型が追加され、{{code|lang=c|u8}}文字(列)リテラルの型が{{code|lang=c|char8_t}}に変更される。また、{{code|lang=c|char}}型のマルチバイト文字列と{{code|lang=c|char8_t}}型のUTF-8文字列を変換するための{{code|lang=c|mbrtoc8()}}と{{code|lang=c|c8rtomb()}}が追加された<ref name="N2653">{{cite web |title=WG14-N2653: char8_t: A type for UTF-8 characters and strings (Revision 1) |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm |website=open-std.org |archive-url=https://web.archive.org/web/20230527110842/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2653.htm |archive-date=May 27, 2023 |date=2021-06-04 |url-status=live |access-date=2024-11-10}}</ref>。 * 明示的に指定されていない限り、全ての{{code|lang=c|char16_t}}文字列(リテラル)が[[UTF-16]]で符号化されること、全ての{{code|lang=c|char32_t}}文字列(リテラル)が[[UTF-32]]で符号化されることが保証されなければならないことが明文化された<ref name="N2728">{{cite web |title=WG14-N2728: char16_t & char32_t string literals shall be UTF-16 & UTF-32 |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2728.htm |website=open-std.org |archive-url=https://web.archive.org/web/20230527110756/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2728.htm |archive-date=May 27, 2023 |date=2021-05-15 |url-status=live |access-date=2024-11-10}}</ref>。 * 複合リテラル定義で記憶域クラス指定子を使用することを許容する<ref name="N3038">{{cite web |title=WG14-N3038: Introduce storage-class specifiers for compound literals |url=https://open-std.org/JTC1/SC22/WG14/www/docs/n3038.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221126130057/https://open-std.org/JTC1/SC22/WG14/www/docs/n3038.htm |archive-date=November 26, 2022 |date=2022-07-21 |url-status=live |access-date=2024-11-10}}</ref>。 == 廃止された機能 == いくつかの古く廃止された機能がC23の作業草案では削除または非推奨となった: * [[トライグラフ]]は削除された<ref name="N2940">{{cite web |title=WG14-N2940: Removing trigraphs??! |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2940.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221026005747/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2940.pdf |archive-date=October 26, 2022 |date=2022-03-02 |url-status=live |access-date=2024-11-10}}</ref>。 * [[プログラミング言語C|K&R]]形式の引数の情報のない関数定義は削除された<ref name="N2432">{{cite web |title=WG14-N2432: Remove support for function definitions with identifier lists proposal |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221227012244/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2432.pdf |archive-date=December 27, 2022 |date=September 25, 2019 |url-status=live |access-date=2024-11-10}}</ref><ref name="N2841">{{cite web |title=WG14-N2841: No function declarators without prototypes |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221112154740/https://www9.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm |archive-date=November 12, 2022 |date=2021-10-10 |url-status=live |access-date=2024-11-10}}</ref>。 * [[2の補数]]以外の符号付き整数の表現は削除され、符号付き整数は2の補数形式で表現することが必須となった<ref name="N2412">{{cite web |title=WG14-N2412: Two's complement sign representation |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf |website=open-std.org |archive-url=https://web.archive.org/web/20221227174224/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2412.pdf |archive-date=December 27, 2022 |date=August 11, 2019 |url-status=live |access-date=2024-11-10}}</ref>。 * {{code|lang=c|<float.h>}}の{{code|lang=c|*_HAS_SUBNORM}}マクロは廃止予定の非推奨機能となった<ref name="N2993">{{cite web |title=WG14-N2993: Make *_HAS_SUBNORM be obsolescent |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2993.htm |website=open-std.org |archive-url=https://web.archive.org/web/20221205194635/https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2993.htm |archive-date=December 5, 2022 |date=2022-06-06 |url-status=live |access-date=2024-11-10}}</ref>。 == コンパイラの対応 == {{更新|section=1|date=2024-11}} 以下のコンパイラはC23に実験的に対応しており、これを利用するためのオプションを提供している: * [[GNU Compiler Collection|GCC]] 9<ref>{{cite web |title=GCC 9 Release Notes |url=https://gcc.gnu.org/gcc-9/changes.html#c |url-status=live |archive-url=https://web.archive.org/web/20221227032646/https://gcc.gnu.org/gcc-9/changes.html |archive-date=December 27, 2022 |website=GNU Project |access-date=2024-11-10}}</ref> * [[Clang]] 9.0<ref>{{cite web |date=May 14, 2019 |title=Clang 9.0 - add new language mode for C2x |url=https://github.com/llvm/llvm-project/commit/d06f3917913d2558b771ccc48d838f8cd8993c01 |url-status=live |archive-url=https://web.archive.org/web/20221227032640/https://github.com/llvm/llvm-project/commit/d06f3917913d2558b771ccc48d838f8cd8993c01 |archive-date=December 27, 2022 |website=LLVM Project Repository |access-date=2024-11-10}}</ref> * {{仮リンク|LCC (コンパイラ)|en|LCC (compiler)|label=Pelles C}} 11.00<ref>{{cite web |title=Pelles C - major changes between 10.00 and 11.00 |url=http://www.smorgasbordet.com/pellesc/changes_1000_1100.htm |url-status=live |archive-url=https://web.archive.org/web/20221227032644/http://www.smorgasbordet.com/pellesc/changes_1000_1100.htm |archive-date=December 27, 2022 |website=smorgasbordet.com |access-date=2024-11-10}}</ref> == 利用可能な文書 == C17などの他のC言語の標準規格と同様に、C23のISOの公式規格書は自由に入手することはできない。 C23の仕様が確定する前の最後の作業草案は2023年4月1日付のN3096である<ref name="N3096"/>。この草案の後の数カ月間、2023年7日9日付の作業草案N3149と2024年2月22日付の公式標準草案N3219が作成されるまでに数百の変更<ref name="N3150">{{cite web |title=N3150 - Editor's Report, Post January-February 2023 Meeting |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3150.htm |website=open-std.org |date=2023-07-08 |access-date=2024-11-10}}</ref>が行われた<ref name="N3150" /><ref name="N3221">{{cite web |title=N3221 - Editor's Report, Post January 2024 Meeting |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3221.htm |website=open-std.org |date=2024-02-15 |access-date=2024-11-10}}</ref>。これら以降の草案は非公開である<ref name="N3150"/><ref name="N3221"/>。 標準草案N3219が発表されたのと同日、新たな作業草案N3220<ref name="N3220">{{cite web |title=ISO/IEC 9899:2024 (en) — N3220 working draft |url=https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf |website=open-std.org |date=2024-02-22 |access-date=2024-11-10}}</ref>が公開された。この草案は公式には将来のC言語の標準である「[[C2Y (C言語)|C2Y]]」の草案であると説明<ref name="N3221"/>されているが、付随する「編集者レポート」では、N3219との違いは付録Kの1つの脚注の修正だけであると明記されている<ref name="N3221"/>。 == 参考文献 == * [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf N3096] (last freely-available working draft before C23); WG14; April 2023. ''(free download)'' * N3149 (working draft of C23 standard); WG14; July 2023. ''(not available to public)'' * N3219 ([https://www.iso.org/standard/82075.html ISO/IEC 9899:2023 DIS Draft]); WG14; February 2024. ''(ISO draft available but not free)'' * ISO/IEC 9899:2024 (official C23 standard); [[International Organization for Standardization|ISO]]; 2024. ''(planning for release in 2024)'' * [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf N3220] (first working draft after C23; differs from draft standard N3219 only in one footnote<ref name="N3221"/>); WG14; February 2024. ''(free download)'' == 脚注 == {{脚注ヘルプ}} {{reflist|30em}} == 関連項目 == * {{仮リンク|C++23|en|C++23}}、[[C++20]]、[[C++17]]、[[C++14]]、[[C++11]]、{{仮リンク|C++03|en|C++03}}、{{仮リンク|C++98|en|C++98}} - C++の言語規格 * {{仮リンク|C言語とC++の互換性|en|Compatibility of C and C++}} == 外部リンク == * [https://www.open-std.org/jtc1/sc22/wg14/ C Language WG14 (Working Group 14)] ** [https://www.open-std.org/jtc1/sc22/wg14/www/wg14_document_log.htm WG14 Document Repository] ** [https://www.open-std.org/jtc1/sc22/wg14/www/meetings WG14 Meetings] - agenda and minutes ** WG14 Charters: [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2021.htm C2x Charter], [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2611.htm C23 Charter], [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2986.htm Interpreting the C23 Charter], [https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3223.pdf C Standard Charter] {{CProLang}} [[Category:C言語]] [[Category:ISO/IEC標準]]
このページで使用されているテンプレート:
テンプレート:CProLang
(
ソースを閲覧
)
テンプレート:Cite web
(
ソースを閲覧
)
テンプレート:Code
(
ソースを閲覧
)
テンプレート:Nowrap
(
ソースを閲覧
)
テンプレート:Pathnav
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:更新
(
ソースを閲覧
)
テンプレート:翻訳直後
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:要改訳
(
ソースを閲覧
)
C23 (C言語)
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報