コンテンツにスキップ

利用者:Ef3/C言語標準の変遷

出典: フリー教科書『ウィキブックス(Wikibooks)』

ISO/IEC 9899:202x (E) working draft — December 11, 2020 N2596

Annex M (informative) Change History

[編集]

M.1 Fifth Edition C23

[編集]

1 Major changes in this fifth edition (__STDC_VERSION__ yyyymmL) include:

  1. 旧式の符号表現と整数の幅に関する制約を削除
    remove obsolete sign representations and integer width constraints
  2. 1引数版の_Static_assertを追加
    added a one-argument version of _Static_assert
  3. 識別子リストを含む関数定義のサポートが削除(プロトタイプ宣言必須化)
    support for function definitions with identifier lists has been removed
  4. ISO/IEC 9945(POSIX)との整合性向上
    harmonization with ISO/IEC 9945 (POSIX):
    1. strftimeの拡張月名フォーマット
      extended month name formats for strftime
    2. 関数の統合:asctime_r, ctime_r, gmtime_r, localtime_r, memccpy, strdup, strndup
      integration of functions: asctime_r, ctime_r, gmtime_r, localtime_r, memccpy, strdup, strndup
  5. 浮動小数点規格IEC 60559との整合性向上
    harmonization with floating point standard IEC 60559:
    1. 2進浮動小数点技術仕様TS 18661-1の統合
      integration of binary floating-point technical specification TS 18661-1
    2. 10進浮動小数点技術仕様TS 18661-2の統合
      integration of decimal floating-point technical specification TS 18661-2
    3. 10進浮動小数点技術仕様TS 18661-4aの統合
      integration of decimal floating-point technical specification TS 18661-4a
  6. マクロ DECIMAL_DIG を廃止
    the macro DECIMAL_DIG is declared obsolescent
  7. 特定のライブラリヘッダにバージョンテスト用マクロを追加
    added version test macros to certain library headers
  8. 属性機能の追加
    added the attributes feature
  9. deprecated, fallthrough, maybe_unused, nodiscard 属性の追加
    added deprecated, fallthrough, maybe_unused, and nodiscard attributes
  10. u8 文字プレフィックスを追加
    added the u8 character prefix

M.2 Fourth Edition -- C17

[編集]

1 There were no major changes in the fourth edition (__STDC_VERSION__ 201710L), only technical corrections and clarifications.

M.3 Third Edition -- C11

[編集]

1 Major changes in the third edition (__STDC_VERSION__ 201112L) included:

  1. 条件付き(オプション)機能(従来は必須であったものも含む)
    conditional (optional) features (including some that were previously mandatory)
  2. 改良されたメモリシーケンスモデル、アトミックオブジェクト、スレッドローカルストレージなど、複数のスレッド実行をサポート(<stdatomic.h>および<threads.h>)。
    support for multiple threads of execution including an improved memory sequencing model, atomic objects, and thread-local storage (<stdatomic.h> and <threads.h>)
  3. 浮動小数点特性マクロの追加 (<float.h>)
    additional floating-point characteristic macros (<float.h>)
  4. オブジェクトのアライメントの問い合わせと指定 (<stdalign.h>, <stdlib.h>)
    querying and specifying alignment of objects (<stdalign.h>, <stdlib.h>)
  5. Unicode character and string (<uchar.h>) (元々はISO/IEC TR 19769:2004で規定)
    Unicode characters and strings (<uchar.h>) (originally specified in ISO/IEC TR 19769:2004)
  6. 型総称式表現
    type-generic expressions
  7. 静的アサーション
    static assertions
  8. 匿名構造体と匿名共用体
    anonymous structures and unions
  9. 非復帰関数
    no-return functions
  10. 複素数を生成するマクロ (<complex.h>)
    macros to create complex numbers (<complex.h>)
  11. 排他的なファイルオープンのサポート
    support for opening files for exclusive access
  12. gets関数の削除(<stdio.h>)
    removed the gets function (<stdio.h>)
  13. aligned_alloc, at_quick_exit, quick_exit 関数の追加 (<stdlib.h>)
    added the aligned_alloc, at_quick_exit, and quick_exit functions (<stdlib.h>)
  14. (条件付き)境界チェックインターフェースのサポート(当初はISO/IEC TR 24731- 1:2007で規定)
    (conditional) support for bounds-checking interfaces (originally specified in ISO/IEC TR 24731– 1:2007)
  15. (条件付き)分析可能性への対応
    (conditional) support for analyzability

M.4 Second Edition -- C99

[編集]

1 Major changes in the second edition (__STDC_VERSION__ 199901L) included:

  1. restricted character set support via digraphs and <iso646.h> (originally specified in

ISO/IEC 9899:1990/Amd 1:1995)

  1. wide character library support in <wchar.h> and <wctype.h> (originally specified in

ISO/IEC 9899:1990/Amd 1:1995)

  1. more precise aliasing rules via effective type
  2. restricted pointers
  3. variable length arrays
  4. flexible array members
  5. static and type qualifiers in parameter array declarators
  6. complex (and imaginary) support in <complex.h>
  7. type-generic math macros in <tgmath.h>
  8. the long long int type and library functions
  9. extended integer types
  10. increased minimum translation limits
  11. additional floating-point characteristics in <float.h>
  12. remove implicit int
  13. reliable integer division
  14. universal character names (\u and \U)
  15. extended identifiers
  16. hexadecimal floating-point constants and %a and %A printf/scanf conversion specifiers
  17. compound literals
  18. designated initializers
  19. // comments
  20. specified width integer types and corresponding library functions in <inttypes.h> and <stdint.h>
  21. remove implicit function declaration
  22. preprocessor arithmetic done in intmax_t/uintmax_t
  23. mixed declarations and statements
  24. new block scopes for selection and iteration statements
  25. integer constant type rules
  26. integer promotion rules
  27. macros with a variable number of arguments (__VA_ARGS__)
  28. the vscanf family of functions in <stdio.h> and <wchar.h>
  29. additional math library functions in <math.h>
  30. treatment of error conditions by math library functions (math_errhandling)
  31. floating-point environment access in <fenv.h>
  32. IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
  33. trailing comma allowed in enum declaration
  34. %lf conversion specifier allowed in printf
  35. inline functions
  36. the snprintf family of functions in <stdio.h>
  37. boolean type in <stdbool.h>
  38. idempotent type qualifiers
  39. empty macro arguments
  40. new structure type compatibility rules (tag compatibility)
  41. additional predefined macro names
  42. _Pragma preprocessing operator
  43. standard pragmas
  44. __func__ predefined identifier
  45. va_copy macro
  46. additional strftime conversion specifiers
  47. LIA compatibility annex
  48. deprecate ungetc at the beginning of a binary file
  49. remove deprecation of aliased array parameters
  50. conversion of array to pointer not limited to lvalues
  51. relaxed constraints on aggregate and union initialization
  52. relaxed restrictions on portable header names
  53. return without expression not permitted in function that returns a value (and vice versa)

M.5 First Edition, Amendment 1 -- AMD1

[編集]

1 Major changes in the amendment to the first edition (__STDC_VERSION__ 199409L) included:

  1. addition of the predefined __STDC_VERSION__ macro
  2. restricted character set support via digraphs and <iso646.h>
  3. wide character library support in <wchar.h> and <wctype.h>