__STDC_ENDIAN_LITTLE__, __STDC_ENDIAN_BIG__, __STDC_ENDIAN_NATIVE__

来自cppreference.com
< 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

参阅

endian 的 C++ 文档