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 이후)

모든 endianness 를 나타냅니다 scalar types 의:

  • 모든 스칼라 타입이 리틀 엔디안인 경우, __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

참고 항목