__STDC_ENDIAN_LITTLE__, __STDC_ENDIAN_BIG__, __STDC_ENDIAN_NATIVE__
Определено в заголовочном файле <stdbit.h> | ||
|---|---|---|
#define __STDC_ENDIAN_LITTLE__ /* implementation-defined */ | (1) | (начиная с C23) |
#define __STDC_ENDIAN_BIG__ /* implementation-defined */ | (2) | (начиная с C23) |
#define __STDC_ENDIAN_NATIVE__ /* implementation-defined */ | (3) | (начиная с C23) |
Определяет порядок байтов всех скалярных типов:
- Если все скалярные типы используют порядок от младшего байта к старшему,
__STDC_ENDIAN_NATIVE__равно__STDC_ENDIAN_LITTLE__. - Если все скалярные типы используют порядок от старшего байта к младшему,
__STDC_ENDIAN_NATIVE__равно__STDC_ENDIAN_BIG__. - Если платформа не использует ни порядок от младшего байта к старшему, ни порядок от старшего байта к младшему,
__STDC_ENDIAN_NATIVE__не равно ни__STDC_ENDIAN_BIG__, ни__STDC_ENDIAN_LITTLE__. - Значения целочисленных константных выражений для
__STDC_ENDIAN_BIG__и__STDC_ENDIAN_LITTLE__не равны.
Пример
#include <stdbit.h>
#include <stdio.h>
int main()
{
switch(__STDC_ENDIAN_NATIVE__)
{
case __STDC_ENDIAN_LITTLE__:
printf("__STDC_ENDIAN_LITTLE__\n");
break;
case __STDC_ENDIAN_BIG__:
printf("__STDC_ENDIAN_BIG__\n");
break;
default:
printf("mixed-endian\n");
}
return __STDC_ENDIAN_NATIVE__;
}
Возможный вывод:
mixed-endian
См. также
Документация по C++ для endian |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/bit/endian