Zwischen 32Bit und 64Bit compatiblen Code schreiben.
-
Kompatibilitätsprobleme zwischen visual cpp 2005 64 Bit und 32 Bit.
Beim Umstellen von 32-Bit auf 64-Bit gibt der Compiler Warnungen aus:
Beispiel:
Bei Subtraktion-zweier Pointervariablen muß das Ergebnis in einer 64-Bit Variable stehen.
Den Rückgabewert aus sizeof <struct> in einer sizeof_t variable speichern.Meine Frage:
Ich möchte möglichst einheitlichen Programmcode für die 64-Bit und die 32-Bit Version.
Gibt es spezielle Include-Files für die 64-Bit Version?
(z.B. mit einer size_t -Deninition.)
-
Keine speziellen include Files, nein.
Du musst einfach nur passende Typen für Grössen verwenden.
Eben ptrdiff_t, size_t, intptr_t, DWORD_PTR etc.
-
Bei den Sourcecode-Zeilen:
int var;
int si = size_t (var);erscheint bei der 64Bit-Version die Warning:
<file>.cpp : warning C4267: 'Initialisierung': Konvertierung von 'size_t' nach 'int', Datenverlust möglich
bei der 32Bit-Version erscheint keine Warning.
-
Weil dort wohl ein sizeof_t genauso groß wie ein int ist. Speichergrößen, Indizes und Zeiger in einem int abzulegen ist nicht empfehlenswert.
-
Daß bei der 64-Bit Version eine Warnung erscheint ist zweifellos gerechtfertigt.
Was ich nicht verstehen kann, daß bei der 64-Bit Version kein eigenes size_t existiert.
Ich kann also size_t nicht aufrufen, wenn ich das Programm sowohl mit den 32-Bit als auch für die 64-Bit Compiler compilieren will.
-
Hans500 schrieb:
Was ich nicht verstehen kann, daß bei der 64-Bit Version kein eigenes size_t existiert.
Natürlich ist
size_t
auch für 64-Bit-Code definiert. Definiert instdlib.h
undstddef.h
.Wenn der Typ nicht bekannt sein sollte, inkludierst du einen der Header nicht.
-