Udostępnij za pośrednictwem


Typowe problemy przy migracji Visual C++ w wersji 64-bitowej

Jeśli używasz kompilatora Microsoft C++ (MSVC) do tworzenia aplikacji do uruchamiania w 64-bitowym systemie operacyjnym Windows, należy pamiętać o następujących problemach:

  • Element int i long to 32-bitowe wartości w 64-bitowych systemach operacyjnych Windows. W przypadku programów, które planujesz skompilować dla platform 64-bitowych, należy zachować ostrożność, aby nie przypisywać wskaźników do zmiennych 32-bitowych. Wskaźniki są 64-bitowe na platformach 64-bitowych, a wartość wskaźnika zostanie obcięta, jeśli przypiszesz ją do zmiennej 32-bitowej.

  • size_t, time_ti ptrdiff_t są wartościami 64-bitowymi w 64-bitowych systemach operacyjnych Windows.

  • time_t jest wartością 32-bitową w 32-bitowych systemach operacyjnych Windows w programie Visual Studio 2005 i starszych wersjach. time_t jest teraz 64-bitową liczbą całkowitą. Aby uzyskać więcej informacji, zobacz Zarządzanie czasem.

    Należy pamiętać, gdzie kod przyjmuje int wartość i przetwarza ją jako size_t wartość lub time_t . Istnieje możliwość, że liczba może być większa niż liczba 32-bitowa, a dane zostaną obcięte, gdy zostaną przekazane z powrotem do int magazynu.

Modyfikator %x (format szesnastkowy int ) printf nie będzie działać zgodnie z oczekiwaniami w 64-bitowym systemie operacyjnym Windows. Będzie działać tylko na pierwszych 32 bitach wartości przekazanej do niej.

  • Użyj elementu %I32x, aby wyświetlić typ całkowitoliczbowy 32-bitowy w formacie szesnastkowym.

  • Użyj %I64x, aby wyświetlić 64-bitowy typ całkowitoliczbowy w formacie szesnastkowym.

  • Format szesnastkowy %p dla wskaźnika będzie działać zgodnie z oczekiwaniami w 64-bitowym systemie operacyjnym Windows.

Aby uzyskać więcej informacji, zobacz:

Zobacz też

Konfigurowanie projektów C++ dla 64-bitowych obiektów docelowych x64
Przewodnik po przenoszeniu i uaktualnianiu pakietu Visual C++