C11 (C言語)

C11とは、ISOで定められたC言語の規格のひとつ、ISO/IEC 9899:2011の通称であり、その前の規格であったC99の後継である。規格策定中の暫定名称は C1X であった。新しい規格であるC11では、マルチスレッドのサポートを改善する詳細なメモリモデルなどの、一般的な現代のコンパイラでサポート済みの機能を主に規格化している。C99の実装では適合が遅れたため、C11では中核となる言語規格に準拠し易いよう特定の機能をオプションにしている。
2011年4月にC11の最終ドラフトであるN1570が発行され、2011年10月10日に新しいC11規格はその最終ドラフトレビューをパスして公式にISOによって承認された。それから2011年12月8日に参加国による決議が必要な批評もなく、ISO/IEC 9899:2011として発行された。
標準マクロであるcodice_1には、C11のサポートが利用可能であることを表すためcodice_2という値が定義されている。C11の機能のいくつかは、GCCではバージョン4.6から、Clangではバージョン3.1から、Microsoft Visual C++ではバージョン16.8から、そしてではバージョン12.1からサポートが開始されている。
C99からの変更点.
C11の規格には、C99の言語仕様とライブラリ仕様からの変更が含まれる。変更点は以下の通り:
 default: cbrt, \
 float: cbrtf)(X)
オプション機能.
新しいリビジョンにおけるC11の実装では規格の一部をサポートしなくともよいが、その一部には1999年のリビジョンでサポートが必須であった規格も含まれる。プログラムからは、C11の実装が特定の機能をサポートしているか否かを判断するための定義済みマクロを利用できる。
批判.
オプション機能である境界チェックインタフェース (Annex K) には議論の余地があるため広く実装されておらず、次期規格のリビジョンから非推奨か除去のいずれかにすることが提案されている（オープンソースであるにはほとんど準拠した実装とみなされる "Safer C" ライブラリが含まれている）。