Byte-Reihenfolge von gcc erkennen lassen?

Kann man die Byte-Reihenfolge des Systems vom Compiler irgendwie erkennen lassen, ohne "von Hand" etwas ändern zu müssen? Ich meine etwas wie:

#ifdef BIG_ENDIAN
...
#endif

#ifdef NAIDNE_ELTTIL
...
#endif

MeMeMe2012-03-30T15:16:10Z

Beste Antwort

Die Bytereihenfolge wird ja vom Compiler nicht erkannt sondern festgelegt, je nach Zielplattform und ggf. speziellen Buildoptionen. Wie auch immer, es gibt tatsächlich eine Möglichkeit, aber die ist erst ab GCC 4.6 verfügbar und zwar:

#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
// Big Endian spezifischer Code
#elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
// Little Endian spezifischer Code.
#endif

Ansonsten hast du noch die Möglichkeit auf bestimmte Zielplattformen testen zu lassen (z.B. __AMD64__), oder das ganze selbst per -D an den Compiler (bzw. Präprozessor) zu senden (z.B. automatisiert im Buildsystem).