Praeprozessor Makros, Konstante fuer Byte Order



  • Hallo Zusammen,

    Ich suche den Praeprozessor Konstanten fuer den Byte Order auf sun sparc.
    In Linux/Unix wird es ja mit __BYTE_ORDER(endian.h) festgelegt. Gibt's so
    eine Konstante auch in sparc?

    Danke im voraus.



  • Wenn du Autoconf benutzt, dann kannst du die Funtkion AC_C_BIGENDIAN benutzen. Damit kannst du dir dann in der config.h ein entsprechendes Define setzen.



  • ProgChild schrieb:

    Wenn du Autoconf benutzt, dann kannst du die Funtkion AC_C_BIGENDIAN benutzen. Damit kannst du dir dann in der config.h ein entsprechendes Define setzen.

    Danke fuer den Hinweis. Ich habe mir die Konstante durch:

    AC_DEFINE([TEST_LENDIAN],[1234],[from lsb to msb])
    AC_DEFINE([TEST_BENDIAN],[4321],[from msb to lsb])
    AC_DEFINE([BYTE_ORDER],[],[Byte order for the machine])
    AC_C_BIGENDIAN([AC_DEFINE([BYTE_ORDER], [TEST_BENDIAN],[])], [AC_DEFINE([BYTE_ORDER], [TEST_LENDIAN],[])], [])
    

    definiert und wird zur Konfigurierungszeit entschieden in welcher BYTE_ORDER der
    Prozessor arbeitet. Die Ausgabe in config.h moechte ich verbessern weil die
    Definition von Konstanten wie *_LENDIAN und *_BENDIAN nach der Definition
    von BYTE_ORDER erscheinen. Auszug von config.h:

    /* Byte order for the machine */
    #define BYTE_ORDER TEST_LENDIAN
    
    /* from msb to lsb */
    #define TEST_BENDIAN 4321
    
    /* from lsb to msb */
    #define TEST_LENDIAN 1234
    

    Wie kann ich den autotools dazu zwingen so dass es TEST_LENDIAN und TEST_BENDIAN
    bevor Definition der BYTE_ORDER erscheinen?

    Und ist es moeglich jede Definition durch autotools mit einem #ifndef DEFINITION
    zu wrappen? Sowie unten:

    /* from msb to lsb */
    #ifndef TEST_BENDIAN
    #define TEST_BENDIAN 4321
    #endif
    
    /* from lsb to msb */
    #ifndef TEST_LENDIAN
    #define TEST_LENDIAN 1234
    #endif
    
    /* now that we have the LENDIAN und BENDIAN we can define BYTE_ORDER */ 
    /* Byte order for the machine */
    #ifndef BYTE_ORDER && defined(TEST_LENDIAN)
    #define BYTE_ORDER TEST_LENDIAN
    #endif
    

    Danke im voraus,



  • die default funktion von AC_C_BIGENDIAN ist, das define WORDS_BIGENDIAN zu setzen. sollte das nicht reichen?


Anmelden zum Antworten