std::endian
ja.cppreference.net より
| ヘッダ <bit>
|
||
enum class endian
{
little = /* implementation-defined */,
big = /* implementation-defined */,
native = /* implementation-defined */,
};
|
で定義 (C++20以上) | |
- 全てのスカラー型がリトルエンディアンの場合、
std::endian::nativeはstd::endian::littleと等しい。 - 全てのスカラー型がビッグエンディアンの場合、
std::endian::nativeはstd::endian::bigと等しい。
境界事例のプラットフォームもサポートされる:
- 全てのスカラー型の
sizeofが1と等しい場合、エンディアン性は問題にならず、std::endian::little、std::endian::big、std::endian::nativeの3つの値は全て同じである。 - プラットフォームが混合エンディアンを使用する場合、
std::endian::nativeはstd::endian::bigともstd::endian::littleとも等しくない。
実装例
enum class endian { #if defined(_MSC_VER) && !defined(__clang__) little = 0, big = 1, native = little #else little = __ORDER_LITTLE_ENDIAN__, big = __ORDER_BIG_ENDIAN__, native = __BYTE_ORDER__ #endif };
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_endian
|
201907L
|
(C++20) | std :: endian |
例
このコードを実行
出力例:
mixed-endian
関連項目
|
(C++23)
|
指定された整数値のバイト順序を反転する
(関数テンプレート) |
|
Cドキュメント
for
endian
|
|