命名空间
变体
操作

__STDC_ENDIAN_LITTLE__,__STDC_ENDIAN_BIG__,__STDC_ENDIAN_NATIVE__

来自 cppreference.cn
< c‎ | numeric
定义于头文件 <stdbit.h>
#define __STDC_ENDIAN_LITTLE__ /* 由实现定义 */
(1) (自 C23 起)
#define __STDC_ENDIAN_BIG__    /* 由实现定义 */
(2) (自 C23 起)
#define __STDC_ENDIAN_NATIVE__ /* 由实现定义 */
(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