Häufig auftretende 64-Bit-Migrationsprobleme bei Visual C++

Wenn Sie mit Visual C++ Anwendungen erstellen, die unter einem 64-Bit-Windows-Betriebssystem ausgeführt werden sollen, sollten Sie folgende Probleme berücksichtigen:

  • int und long sind unter 64-Bit-Windows-Betriebssystemen 32-Bit-Werte.Bei Programmen, die Sie für 64-Bit-Plattformen kompilieren möchten, sollten Sie darauf achten, keine Zeiger auf 32-Bit-Variablen zuzuweisen.Zeiger sind auf 64-Bit-Plattformen 64-Bit-Werte, und der Zeigerwert wird abgeschnitten, wenn Sie sie einer 32-Bit-Variable zuweisen.

  • size_t, time_t und ptrdiff_t sind unter 64-Bit-Windows-Betriebssystemen 64-Bit-Werte.

  • time_t ist unter 32-Bit-Windows-Betriebssystemen in Visual C++-Versionen vor Visual C++ 2005 ein 32-Bit-Wert.time_t ist jetzt standardmäßig eine 64-Bit-Ganzzahl.Weitere Informationen finden Sie unter Time Management (auf Englisch).

    Sie müssen berücksichtigen, wo der Code einen int-Wert nimmt und als einen size_t- oder time_t-Wert verarbeitet.Die Zahl kann unter Umständen größer als eine 32-Bit-Zahl werden, und Daten werden abgeschnitten, wenn sie wieder an den int-Speicher übergeben werden.

Der %x-Modifzierer(Hexadezimal-int-Format) printf funktioniert unter einem 64-Bit-Windows-Betriebssystem nicht wie erwartet.Er funktioniert nur auf den ersten 32 Bits des Werts, der an ihn übergeben wird.

  • Verwenden Sie %I32x, um einen 32-Bit-Ganzzahltyp im Hexadezimalformat anzuzeigen.

  • Verwenden Sie %I64x, um einen 64-Bit-Ganzzahltyp im Hexadezimalformat anzuzeigen.

  • %p (Hexadezimalformat für einen Zeiger) funktioniert unter einem 64-Bit-Windows-Betriebssystem wie erwartet.

Weitere Informationen finden Sie unter:

Siehe auch

Weitere Ressourcen

Programme für 64-Bit-Systeme (Visual C++) konfigurieren

Portieren und Aktualisieren von Programmen