Problem mit Portierung der Datentypen: __int32, __int64, ....



  • hallo ich nutze bei mir folgenden Header, den ich auf Linux portieren will. Dachte er sei ohne Probleme portierbar, allerdings gibts wohl in Linux die Datentypen nicht oder sie heissen anders. Was mache ich da??

    hier die datei:

    #ifndef X_FILETYPES
    #define X_FILETYPES
    
    /* signed int */
    typedef			__int16			XInt16;
    typedef			__int32			XInt32;	
    typedef			__int64			XInt64;
    
    /* unsigned int */
    typedef			unsigned __int16	XUint16;
    typedef			unsigned __int32	XUint32;
    typedef			unsigned __int64	XUint64;
    
    /* other Integers */
    typedef			__int32				XLong;
    typedef			__int16				XShort;
    typedef			unsigned __int32	XUlong;
    typedef			unsigned __int16	XUShort;
    
    /* flowing values */
    typedef			float				XFloat;
    typedef			double				XDouble;
    
    /* characters */
    typedef			char				XChar;
    
    /* others */
    
    #endif
    


  • Hallo,

    ich kann es leider im Moment nicht nachschauen, da ich auf der Arbeit bin, aber
    ich meine die __int32 und __int64 haben unter Linux noch ein _t am Schluss,
    sprich:

    __int32_t
    __int64_t

    mfg
    v R



  • hmmmmm achso....

    Also ich habe gelernt, wenn man nach dem ANSI C- Standart programmiert, sind Programme unter Linux sowie unter Windows lauffähig (das impliziert natürlich das man keine plattformspezifischen Typen verwendet was bei mir noch nen 2.Problem ist.

    Aber wie sieht das denn mit den Datentypen aus? Ich nehme an, wenn ich da jetzt so nen t hintermache, läufts auf windows net mehr 😃

    Gruß Sebastian



  • ifdef dürfte dein neuer Freund sein (o;



  • Unter Linux findest du die Typen, wie vom ISO C99 Standard gefordert in stdint.h und die Typen fangen nicht mit __ an und hören mit _t auf, also int8_t oder uint64_t

    und wie gesagt, #ifdef ist dein Freund 🙂



  • ja dann muss ich das wohl so machen

    ich habe nur gehört das kompilerdirektiven nicht gut sind.



  • Hallo,

    ich habe grade das Makro _MSC_VER gefunden. Hat g++ denn was vergleichbares? Ich muss ja irgenwie an die Kompilerversion rankommen.

    Gruß Sebastian



  • __GNUC__ war das glaub ich



  • ja danke es schein zu funktionieren....

    aber irgendwie mag er meine unsigned definitionen net:

    typedef			unsigned int16_t	XUint16;
    typedef			unsigned int32_t	XUint32;
    typedef			unsigned int64_t	XUint64;
    


  • uint16_t

    werd mal ein bisschen selbstständiger 🙄



  • schade...

    naja nen versuch wars ja wert aber auch das übersetzt er nicht


Anmelden zum Antworten