Namespaces
Variants

__STDC_ENDIAN_LITTLE__, __STDC_ENDIAN_BIG__, __STDC_ENDIAN_NATIVE__

From cppreference.net
定义于头文件 <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