Delen via


Veelvoorkomende 64-bits migratieproblemen met Microsoft C++

Wanneer u de MsVC-compiler (Microsoft C++) gebruikt om toepassingen te maken die kunnen worden uitgevoerd op een 64-bits Windows-besturingssysteem, moet u rekening houden met de volgende problemen:

  • Een int en een long zijn 32-bits waarden op 64-bits Windows-besturingssystemen. Voor programma's die u wilt compileren voor 64-bits platforms, moet u ervoor zorgen dat u geen aanwijzers toewijst aan 32-bits variabelen. Aanwijzers zijn 64-bits op 64-bits platforms en u kapt de waarde van de aanwijzer af als u deze toewijst aan een 32-bits variabele.

  • size_t, time_ten ptrdiff_t zijn 64-bits waarden op 64-bits Windows-besturingssystemen.

  • time_t is een 32-bits waarde op 32-bits Windows-besturingssystemen in Visual Studio 2005 en eerder. time_t is nu standaard een 64-bits geheel getal. Zie Time Management voor meer informatie.

    Je moet weten waar je code een int waarde neemt en verwerkt als een size_t of time_t waarde. Het is mogelijk dat het aantal groter kan worden dan een 32-bits getal en dat gegevens worden afgekapt wanneer het wordt doorgestuurd naar de int opslag.

De modifier %x (hex-indeling int ) printf werkt niet zoals verwacht op een 64-bits Windows-besturingssysteem. Deze wordt alleen uitgevoerd op de eerste 32 bits van de waarde die eraan wordt doorgegeven.

  • Gebruik %I32x om een 32-bits integraal type weer te geven in hex-indeling.

  • Gebruik %I64x om een 64-bits integraal type weer te geven in hex-indeling.

  • De %p (hex-indeling voor een aanwijzer) werkt zoals verwacht op een 64-bits Windows-besturingssysteem.

Voor meer informatie, zie:

Zie ook

C++-projecten configureren voor 64-bits, x64-doelen
Handleiding voor overzetten en upgraden van Microsoft C++