利用者:Ef3/C言語標準の変遷
< 利用者:Ef3
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:
- 旧式の符号表現と整数の幅に関する制約を削除
remove obsolete sign representations and integer width constraints - 1引数版の_Static_assertを追加
added a one-argument version of _Static_assert - 識別子リストを含む関数定義のサポートが削除(プロトタイプ宣言必須化)
support for function definitions with identifier lists has been removed - ISO/IEC 9945(POSIX)との整合性向上
harmonization with ISO/IEC 9945 (POSIX):- strftimeの拡張月名フォーマット
extended month name formats for strftime - 関数の統合: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
- strftimeの拡張月名フォーマット
- 浮動小数点規格IEC 60559との整合性向上
harmonization with floating point standard IEC 60559:- 2進浮動小数点技術仕様TS 18661-1の統合
integration of binary floating-point technical specification TS 18661-1 - 10進浮動小数点技術仕様TS 18661-2の統合
integration of decimal floating-point technical specification TS 18661-2 - 10進浮動小数点技術仕様TS 18661-4aの統合
integration of decimal floating-point technical specification TS 18661-4a
- 2進浮動小数点技術仕様TS 18661-1の統合
- マクロ DECIMAL_DIG を廃止
the macro DECIMAL_DIG is declared obsolescent - 特定のライブラリヘッダにバージョンテスト用マクロを追加
added version test macros to certain library headers - 属性機能の追加
added the attributes feature - deprecated, fallthrough, maybe_unused, nodiscard 属性の追加
added deprecated, fallthrough, maybe_unused, and nodiscard attributes - 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:
- 条件付き(オプション)機能(従来は必須であったものも含む)
conditional (optional) features (including some that were previously mandatory) - 改良されたメモリシーケンスモデル、アトミックオブジェクト、スレッドローカルストレージなど、複数のスレッド実行をサポート(<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>) - 浮動小数点特性マクロの追加 (<float.h>)
additional floating-point characteristic macros (<float.h>) - オブジェクトのアライメントの問い合わせと指定 (<stdalign.h>, <stdlib.h>)
querying and specifying alignment of objects (<stdalign.h>, <stdlib.h>) - 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) - 型総称式表現
type-generic expressions - 静的アサーション
static assertions - 匿名構造体と匿名共用体
anonymous structures and unions - 非復帰関数
no-return functions - 複素数を生成するマクロ (<complex.h>)
macros to create complex numbers (<complex.h>) - 排他的なファイルオープンのサポート
support for opening files for exclusive access - gets関数の削除(<stdio.h>)
removed the gets function (<stdio.h>) - aligned_alloc, at_quick_exit, quick_exit 関数の追加 (<stdlib.h>)
added the aligned_alloc, at_quick_exit, and quick_exit functions (<stdlib.h>) - (条件付き)境界チェックインターフェースのサポート(当初はISO/IEC TR 24731- 1:2007で規定)
(conditional) support for bounds-checking interfaces (originally specified in ISO/IEC TR 24731– 1:2007) - (条件付き)分析可能性への対応
(conditional) support for analyzability
M.4 Second Edition -- C99
編集1 Major changes in the second edition (__STDC_VERSION__ 199901L) included:
- restricted character set support via digraphs and <iso646.h> (originally specified in
ISO/IEC 9899:1990/Amd 1:1995)
- wide character library support in <wchar.h> and <wctype.h> (originally specified in
ISO/IEC 9899:1990/Amd 1:1995)
- more precise aliasing rules via effective type
- restricted pointers
- variable length arrays
- flexible array members
- static and type qualifiers in parameter array declarators
- complex (and imaginary) support in <complex.h>
- type-generic math macros in <tgmath.h>
- the long long int type and library functions
- extended integer types
- increased minimum translation limits
- additional floating-point characteristics in <float.h>
- remove implicit int
- reliable integer division
- universal character names (\u and \U)
- extended identifiers
- hexadecimal floating-point constants and %a and %A printf/scanf conversion specifiers
- compound literals
- designated initializers
- // comments
- specified width integer types and corresponding library functions in <inttypes.h> and <stdint.h>
- remove implicit function declaration
- preprocessor arithmetic done in intmax_t/uintmax_t
- mixed declarations and statements
- new block scopes for selection and iteration statements
- integer constant type rules
- integer promotion rules
- macros with a variable number of arguments (__VA_ARGS__)
- the vscanf family of functions in <stdio.h> and <wchar.h>
- additional math library functions in <math.h>
- treatment of error conditions by math library functions (math_errhandling)
- floating-point environment access in <fenv.h>
- IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
- trailing comma allowed in enum declaration
- %lf conversion specifier allowed in printf
- inline functions
- the snprintf family of functions in <stdio.h>
- boolean type in <stdbool.h>
- idempotent type qualifiers
- empty macro arguments
- new structure type compatibility rules (tag compatibility)
- additional predefined macro names
- _Pragma preprocessing operator
- standard pragmas
- __func__ predefined identifier
- va_copy macro
- additional strftime conversion specifiers
- LIA compatibility annex
- deprecate ungetc at the beginning of a binary file
- remove deprecation of aliased array parameters
- conversion of array to pointer not limited to lvalues
- relaxed constraints on aggregate and union initialization
- relaxed restrictions on portable header names
- 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:
- addition of the predefined __STDC_VERSION__ macro
- restricted character set support via digraphs and <iso646.h>
- wide character library support in <wchar.h> and <wctype.h>