C++03規格時点で存在したC言語互換ライブラリに対するC++11規格での変更点をまとめています。
概要 †
当文書では、C言語互換ヘッダファイル群について、C++11規格での変更点をまとめている。
C言語互換ヘッダファイル名は、C言語標準のヘッダファイル名から拡張子 .h を削除し、頭に c を付けた形で命名されている。(例: <stdio.h> → <cstdio>)
定義されている内容はほとんどC言語のものと同じだが、下記のような違いがある。
<cassert> †
変更点なし。
<cctype> †
<cerrno> †
変更点なし。
<cfloat> †
下記のマクロ定数が定義された。
DECIMAL_DIG
FLT_DIG
、 DBL_DIG
、 LDBL_DIG
の中で最大の値。
FLT_EVAL_METHOD
- 処理系において実数型がどのように評価されるかを示す。
- 値が
0
の場合、各々の型を各々の型のまま評価する。
- 値が
1
の場合、 float
は double
として評価される。
- 値が
2
の場合、 float
と double
は long double
として評価される。
- 値が
-1
の場合は評価方法を決定できない。
- 値が
-2
以下の場合は処理系依存。
<ciso646> †
変更点なし。
<climits> †
下記のマクロ定数が定義された。
LLONG_MIN
long long int
型で表すことのできる最小の数値。 -9223372036854775807
以下の値となる。
LLONG_MAX
long long int
型で表すことのできる最大の数値。 9223372036854775807
以上の値となる。
ULLONG_MAX
unsigned long long int
型で表すことのできる最大の数値。 18446744073709551615
以上の値となる。
<clocale> †
lconv 構造体 †
下記のメンバ変数が定義された。
| char int_p_cs_precedes; char int_n_cs_precedes;
|
| char int_p_sep_by_space; char int_n_sep_by_space;
|
| char int_p_sign_posn; char int_n_sign_posn;
|
<cmath> †
文中で登場する型名については下記のように定まる。
- 関数の引数の型名が
integral
で始まるものは、任意の整数型を引数に取ることを表す。
- 関数の引数の型名が
arithmetric
で始まるものは、任意の整数型または実数型を引数に取ることを表す。
- 関数の戻り値の型名が
arithmetric
となっているものは次の規則に従って型が定まる。
- 型名が
arithmetric
で始まる引数のいずれかの型が long double
ならば long double
。
- 型名が
arithmetric
で始まる引数のいずれかの型が double
または整数型ならば double
。
- 型名が
arithmetric
で始まる引数のすべての型が float
ならば float
。
- 上記以外ならば未定義。(コンパイルエラー)
実際の関数定義方法は処理系依存だが、一般的にはオーバロードと関数テンプレートを併用して定義される。
<csetjmp> †
変更点なし。
<csignal> †
変更点なし。
<cstdarg> †
下記のマクロ関数が定義された。
| void va_copy(va_list dest, va_list src);
|
<cstddef> †
<cstdio> †
下記の関数が定義された。
| int snprintf(char* dest, size_t length, const char* format, ...);
|
| int vsnprintf(char* dest, size_t length, const char* format, va_list arg);
|
| int vscanf(const char* format, va_list arg);
|
| int vfscanf(FILE* fp, const char* format, va_list arg);
|
| int vsscanf(const char* src, const char* format, va_list arg);
|
<cstdlib> †
<cstring> †
変更点なし。
<ctime> †
<cwchar> †
<cwctype> †