Megosztás:


Gyakori Microsoft C++ 64 bites migrálási problémák

Ha a Microsoft C++ (MSVC) fordítóval hoz létre alkalmazásokat a 64 bites Windows operációs rendszeren való futtatáshoz, vegye figyelembe az alábbi problémákat:

  • Az an int és a long 32 bites értékek 64 bites Windows operációs rendszereken. A 64 bites platformokra fordítandó programok esetében ügyeljen arra, hogy ne rendeljen mutatókat 32 bites változókhoz. A mutatók 64 bitesek 64 bites platformokon, és ha 32 bites változóhoz rendeli, csonkíthatja a mutató értékét.

  • size_t, time_tés ptrdiff_t 64 bites értékek a 64 bites Windows operációs rendszereken.

  • time_t 32 bites érték a Visual Studio 2005 és korábbi 32 bites Windows operációs rendszereken. time_t mostantól alapértelmezés szerint 64 bites egész szám. További információ: Time Management.

    Tisztában kell lennie azzal, hogy a kód hol vesz fel egy int értéket, és azt size_t vagy time_t értékként dolgozza fel. Lehetséges, hogy a szám nagyobb lehet, mint egy 32 bites szám, és a rendszer csonkolja az adatokat, amikor visszakerül a int tárolóba.

A %x (hexa int formátum) printf módosító nem a várt módon működik a 64 bites Windows operációs rendszeren. Csak a neki átadott érték első 32 bitjén fog működni.

  • A %I32x használatával 32 bites integráltípust jeleníthet meg hexa formátumban.

  • A %I64x használatával 64 bites integráltípust jeleníthet meg hexa formátumban.

  • A %p (mutató hexa formátuma) a várt módon fog működni egy 64 bites Windows operációs rendszeren.

További információkért lásd:

Lásd még

C++ projektek konfigurálása 64 bites, x64-alapú célokhoz
A Microsoft C++ portolási és frissítési útmutatója