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
ilong
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_t
iptrdiff_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ą jakosize_t
wartość lubtime_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 doint
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++