<cstdint>ヘッダでは、ビット数が規定された整数型の別名、およびマクロを提供する。これらの機能は、std名前空間に属することを除いてC言語の標準ライブラリ<stdint.h>ヘッダと同じである。
フリースタンディング
このヘッダは、フリースタンディング処理系でも使用できる。本ヘッダが提供する全ての機能がフリースタンディング処理系で使用可能である。
符号付き整数型
符号なし整数型
以下のマクロは、整数型の限界値を表す。
符号付き整数型用の限界値マクロ
符号なし整数型用の限界値マクロ
幅マクロ
以下のマクロは、各整数型の幅 (値ビット数) を表す。
バージョン情報マクロ
| マクロ |
説明 |
対応バージョン |
__STDC_VERSION_STDINT_H__ |
<cstdint>が提供するC標準ライブラリ機能のバージョン (202311L) |
C++26 |
符号付き整数型用の定数値マクロ
以下のマクロは、各整数型の定数値を表す関数マクロである。
例: int8_t x = INT8_C(1);
| マクロ |
説明 |
対応バージョン |
INT8_C(n) |
8ビット幅を持つ、符号付き整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
INT16_C(n) |
16ビット幅を持つ、符号付き整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
INT32_C(n) |
32ビット幅を持つ、符号付き整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
INT64_C(n) |
64ビット幅を持つ、符号付き整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
INTMAX_C(n) |
最も大きい符号付き整数型の定数値 |
C++11 |
符号なし整数型用の定数値マクロ
| マクロ |
説明 |
対応バージョン |
UINT8_C(n) |
8ビット幅を持つ、符号なし整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
UINT16_C(n) |
16ビット幅を持つ、符号なし整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
UINT32_C(n) |
32ビット幅を持つ、符号なし整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
UINT64_C(n) |
64ビット幅を持つ、符号なし整数型の定数値(実装するかどうかは処理系定義) |
C++11 |
UINTMAX_C(n) |
最も大きい符号なし整数型の定数値 |
C++11 |
備考
__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS マクロについて
C99 の 7.18.3 <stdint.h> についての脚注で、同ヘッダを C++ でコンパイルする場合に限界値マクロ、定数値マクロを得るためにはこれらのマクロを事前に定義する必要があるものとされていた。
Footnote 219, 220: C++ implementations should define these macros only when __STDC_LIMIT_MACROS is defined before <stdint.h> is included.
Footnote 222: C++ implementations should define these macros only when __STDC_CONSTANT_MACROS is defined before <stdint.h> is included.
しかしその後の C 規格改定でこの脚注は削除され、 C11 では触れられていない。 C++11 は( C++14 も) C99 を参照規格としているが、 18.4.1 [cstdint.syn] p2 に注釈として、これらのマクロは採用されていないことが明記されている。
The macros defined by <cstdint> are provided unconditionally. In particular, the symbols __STDC_LIMIT_MACROS and
__STDC_CONSTANT_MACROS (mentioned in footnotes 219, 220, and 222 in
the C standard) play no role in C++.
おそらく上記 C99 の脚注のため、 C++ 処理系によってはヘッダ <stdint.h> および <cstdint> での限界値マクロ、定数値マクロの提供にこれらマクロの定義が必要となっているかもしれない。(特に C++98 対応の処理系が拡張として C99 由来のこれらヘッダを提供していた場合など。)
バージョン
言語
参照