Freigeben über


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

Aktualisiert: November 2007

Wenn Sie Visual C++ zum Erstellen von Anwendungen für 64-Bit-Windows-Betriebssysteme verwenden, sollten Sie folgende Punkte berücksichtigen:

  • int und long sind unter 64-Bit-Windows-Betriebssystemen 32-Bit-Werte. In Programmen, die für 64-Bit-Plattformen kompiliert werden, sollten Sie darauf achten, keine Zeiger auf 32-Bit-Variablen zu verwenden. Zeiger sind auf 64-Bit-Plattformen 64-Bit-Zeiger, und der Zeigerwert wird abgeschnitten, wenn Sie ihn einer 32-Bit-Variable zuweisen.

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

  • time_t ist auf 32-Bit-Windows-Betriebssystemen in Visual C++-Versionen vor Visual C++ 2005 ein 32-Bit-Wert. In Visual C++ 2005 und höheren Versionen ist time_t standardmäßig eine 64-Bit-Ganzzahl. Weitere Informationen finden Sie unter Zeit-Management.

    Sie sollten wissen, an welcher Stelle Ihr Code einen int-Wert übernimmt und diesen als size_t-Wert oder als time_t-Wert verarbeitet. Die Zahl kann die Länge eines 32-Bit-Werts überschreiten, sodass die Daten abgeschnitten sind, wenn Sie wieder an den int-Speicher übergeben werden.

Der printf-Modifizierer %x (hexadezimales int-Format) funktioniert auf einem 64-Bit-Windows-Betriebssystem nicht erwartungsgemäß. Er wird nur auf die ersten 32 Bits eines ihm übergebenen Werts angewendet.

  • Verwenden Sie %I32x, um auf einem 32-Bit-Windows-Betriebssystem eine ganze Zahl anzuzeigen.

  • Verwenden Sie %I64x, um auf einem 64-Bit-Windows-Betriebssystem eine ganze Zahl anzuzeigen.

  • %p (Hexadezimalformat für einen Zeiger) funktioniert unter 64-Bit-Windows-Betriebssystemen erwartungsgemäß.

Weitere Informationen finden Sie unter folgenden Themen:

Siehe auch

Weitere Ressourcen

64 Bit-Programmierung mit Visual C++

Portieren und Aktualisieren von Programmen