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_tmfg
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