Namensräume
Varianten
Aktionen

__STDC_ENDIAN_LITTLE__, __STDC_ENDIAN_BIG__, __STDC_ENDIAN_NATIVE__

Von cppreference.com
< c‎ | numerisch
Definiert im Header <stdbit.h>
#define __STDC_ENDIAN_LITTLE__ /* implementierungsabhängig */
(1) (seit C23)
#define __STDC_ENDIAN_BIG__    /* implementierungsabhängig */
(2) (seit C23)
#define __STDC_ENDIAN_NATIVE__ /* implementierungsabhängig */
(3) (seit C23)

Gibt die Endianness aller skalarer Typen an

  • Wenn alle skalaren Typen Little-Endian sind, ist __STDC_ENDIAN_NATIVE__ gleich __STDC_ENDIAN_LITTLE__.
  • Wenn alle skalaren Typen Big-Endian sind, ist __STDC_ENDIAN_NATIVE__ gleich __STDC_ENDIAN_BIG__.
  • Wenn die Plattform weder Little-Endian noch Big-Endian verwendet, ist __STDC_ENDIAN_NATIVE__ weder gleich __STDC_ENDIAN_BIG__ noch __STDC_ENDIAN_LITTLE__.
  • Die Werte der ganzzahligen konstanten Ausdrücke für __STDC_ENDIAN_BIG__ und __STDC_ENDIAN_LITTLE__ sind nicht gleich.

[bearbeiten] Beispiel

#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__;
}

Mögliche Ausgabe

mixed-endian

[bearbeiten] Siehe auch

C++ Dokumentation für endian