std:: endian
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++20)
|
||||
|
(C++23)
|
||||
| Integral powers of 2 | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Rotating | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Counting | ||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
|
(C++20)
|
||||
| Endian | ||||
|
endian
(C++20)
|
|
Определено в заголовочном файле
<bit>
|
||
|
enum
class
endian
{
|
(начиная с C++20) | |
Указывает порядок байтов для всех скалярных типов :
- Если все скалярные типы имеют порядок байтов little-endian, std :: endian :: native равен std :: endian :: little .
- Если все скалярные типы имеют порядок байтов big-endian, 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
|
|