std::endian
|
在标头
<bit> 定义 |
||
|
enum class endian
{ |
(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三个值相同。 - 若平台使用混合端序,则
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 |
示例
可能的输出:
混合端序
参阅
|
(C++23)
|
反转给定整数值中的字节 (函数模板) |