Dela via


Vanliga problem med visuell C++ 64-bitarsmigrering

När du använder Microsoft C++-kompilatorn (MSVC) för att skapa program som ska köras på ett 64-bitars Windows-operativsystem bör du vara medveten om följande problem:

  • En int och en long är 32-bitarsvärden på 64-bitars Windows-operativsystem. För program som du planerar att kompilera för 64-bitarsplattformar bör du vara noga med att inte tilldela pekare till 32-bitarsvariabler. Pekare är 64-bitars på 64-bitarsplattformar och du trunkerar pekarvärdet om du tilldelar det till en 32-bitarsvariabel.

  • size_t, time_toch ptrdiff_t är 64-bitarsvärden på 64-bitars Windows-operativsystem.

  • time_t är ett 32-bitarsvärde på 32-bitars Windows-operativsystem i Visual Studio 2005 och tidigare. time_t är nu ett 64-bitars heltal som standard. Mer information finns i Tidshantering.

    Du bör vara medveten om var koden tar ett int värde och bearbetar den som ett size_t eller time_t -värde. Det är möjligt att talet kan bli större än ett 32-bitars tal och att data trunkeras när de skickas tillbaka till lagringen int .

Modifieraren %x (hexformat int ) printf fungerar inte som förväntat på ett 64-bitars Windows-operativsystem. Den fungerar bara på de första 32 bitarna av det värde som skickas till den.

  • Använd %I32x för att visa en 32-bitars integraltyp i hexformat.

  • Använd %I64x för att visa en 64-bitars integraltyp i hexformat.

  • %p (hexformat för en pekare) fungerar som förväntat på ett 64-bitars Windows-operativsystem.

Mer information finns i:

Se även

Konfigurera C++-projekt för 64-bitars x64-mål
Visual C++ Porting and Upgrading Guide