std::endian
От ru.cppreference.net
| Определён в заголовке <bit>
|
||
enum class endian
{
little = /* implementation-defined */,
big = /* implementation-defined */,
native = /* implementation-defined */,
};
|
(since 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 |
Пример
Запустить этот код
Возможный вывод:
mixed-endian
Смотрите также
|
(C++23)
|
обращает порядок байтов в заданном целочисленном значении
(шаблон функции) |
|
C documentation
для
endian
|
|