名前空間
変種
操作

C の歴史

提供: cppreference.com
< c‎ | language

目次

[編集] 初期の C

  • 1969年 Unix のためのシステムプログラミング言語として PDP-7 のアセンブラを置き換えるために BCPL をベースとして B が作成される。
  • 演算子 ++、--、複合代入の追加。 まだ BCPL と同様の型のない言語でした。
  • 1971年 B を PDP-11 に移植するときに NB ("new B") が作成される。
  • 型 (int、char、配列およびポインタ)、配列からポインタへの変換、機械語へのコンパイル。
  • 1972年 C に改名される。
  • 構造体、演算子 && および ||、プリプロセッサ、移植性のある入出力。
  • 1973年 Unix が C で書き直される。
  • unsigned、long、共用体、列挙型、型の安全性の向上。
  • 1978年 プログラミング言語 C 第1版。

[編集] 標準 C

  • 1983年 ANSI が X3J11 委員会を設立。
  • 1988年 プログラミング言語 C 第2版。
  • 1989年 C89、ANSI C 標準が発行される。
  1. 既存の慣習の成文化。
  2. 新しい機能: volatile、enum、signed、void、ロケール。
  3. C++ から: const、関数プロトタイプ。
  • 1990年 C90、ANSI C 標準が ISO/IEC 9899-1990 として承認される。
  • 1995年 C95 (ISO/IEC 9899 AM1) (online store)
  1. 大きく拡張されたワイド文字とマルチバイト文字のサポート (wctype.h、 wchar.h、ストリーム入出力の追加と変更など)。
  2. ダイグラフ、iso646.h。
  • 1995年 正誤票 1 (ISO/IEC 9899 TCOR1)
  • 1996年 正誤票 2 (ISO/IEC 9899 TCOR2)
  • 1999年 C99 (ISO/IEC 9899:1999)
  1. 新しい機能 bool、long long、stdint.h、inttypes.h、restrict、複合リテラル、可変長配列、フレキシブル配列メンバ、指示付き初期化子、fenv.h、可変長マクロ、複素数、__func__、16進浮動小数点フォーマット(%a)、lconv における金額の書式、isblank、ナロー文字列リテラルとワイド文字列リテラルの連結、列挙子の最後のコンマ、関数形式マクロにおける空の引数、STDC_* プラグマ、va_copy、tmpnam のヌルの戻り値、setvbuf におけるヌルポインタ、printf における長さ修飾子 hh および ll、snprintf、_Exit、tgmath.h、POSIX ライクな strftime の指定子。
  2. C++ から: inline、宣言とコードの混在、for ループの初期化節における宣言、// コメント、ソースコード中のユニバーサル文字名。
  3. 暗黙の関数と暗黙の int が削除されました。
  • 2001年 正誤票 1 (ISO/IEC 9899:1999/Cor.1:2001(E))
  • gets が非推奨化されました。
  1. スレッド対応のメモリモデル、stdatomic.h、threads.h、型総称関数、alignas/alignof、noreturn、static assert、解析可能性拡張、複素数型と虚数型の拡張、無名構造体および無名共用体、排他的ファイルオープンモード、quick_exit。
  2. gets が削除されました。
  3. 境界チェック付きインタフェース TR から: 境界チェック付きインタフェース。
  4. Unicode TR から: char16_t、char32_t、uchar.h。
  • 2012年 正誤票 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO store)
  • 2013年 セキュアコーディングルール TS (ISO/IEC TS 17961:2013) (ISO store) (June 26, 2012)
  • 2014年 FP TS パート1: 2進浮動小数点算術 (ISO/IEC TS 18661-1:2014) (ISO store) (2013 draft )
  1. IEC 60559:2011 のすべての基本的な要件といくつかの推奨事項をカバーするための C11 (ほとんどは Annex F) への変更を提供します (C11 は IEC 60559:1989 をベースにしていました)。
  • 2015年 FP TS パート2: 10進浮動小数点算術 (ISO/IEC TS 18661-2:2015) (ISO store) (2015 draft)
  1. 10進浮動小数点算術に対する IEC 60559:2011 のすべての要件およびいくつかの基本的な推奨事項をサポートするための C11 への変更を提供します。 これは ISO/IEC TR 24732:2009 に取って代わります。
  • 2015年 FP TS パート3: 交換および拡張型 (ISO/IEC TS 18661-3:2015) (ISO store) (2015 draft)
  1. 算術用および非算術用両方のための、拡張浮動小数点フォーマットおよび交換用フォーマットに対する、 IEC 60559:2011 の推奨事項をサポートするための C11 への変更を提供します。
  1. π単位の三角関数、平方根の逆数、複利などを含む、 IEC 60559:2011 によって推奨されるすべての数学演算をサポートするための C11 への変更を提供します。
  1. IEC 60559:2011 によって推奨されるすべての補助属性 (評価モデル、例外処理、再現性など) をサポートするための C11 への変更を提供します。
ATOMIC_VAR_INIT の非推奨化および以下の欠陥報告に対する修正が含まれます。
C17 で修正された欠陥報告 (54個の欠陥)

[編集] 今後の動向

  • 並列処理 TS (Draft n2017 2016-03-10)
  • トランザクショナルメモリ TS (Draft n1961 2015-09-23)
  • C2x (Draft n2479 2020-02-05): 次のメジャーな C 言語標準の改訂
  1. TS から (言語): 10進浮動小数点型
  2. C++ から (言語): 引数1個の _Static_assert属性u8 文字定数、旧形式の関数宣言および関数定義の削除
  3. TS から (ライブラリ): 拡張2進浮動小数点算術、10進浮動小数点算術
  4. POSIX から (ライブラリ): memccpy()strdup()strndup()asctime_r()ctime_r()gmtime_r()localtime_r()
  5. DR ステータスが与えられていない問題のリスト: n2297 (2018-09-24)
  6. C11 発行後の欠陥報告のリスト (C2x に予定されているものも含む): n2316 (October 2018)

[編集] 関連項目

C++ の歴史C++リファレンス

[編集] 参考文献