Visual C++ 64 位元移轉時常見的問題
當您使用 Visual c++ 建立在 64 位元 Windows 作業系統上執行的應用程式時,您應注意下列問題:
int 和 long 是 64 位元 Windows 作業系統上的 32 位元值。對於您要為 64 位元平台進行編譯的程式,您應小心不要將指標指派給 32 位元變數。指標在 64 位元平台上是 64 位元的,如果您將指標指派給 32 位元變數,將會截斷指標值。
size_t、time_t 和 ptrdiff_t 在 64 位元 Windows 作業系統上是 64 位元值。
在 32 位元 Windows 作業系統上,time_t 在 Visual C++ 2005 之前的 Visual C++ 版本中是 32 位元值。time_t 現在預設為 64 位元整數。如需詳細資訊,請參閱時間管理。
您應注意程式碼在何處取用 int 值,並將其視為 size_t 或 time_t 值來處理。此數值可能會成長而大於 32 位元數值,且資料在傳回至 int 儲存體時將會截斷。
%x (十六進位 int 格式) printf 修飾詞在 64 位元 Windows 作業系統上將無法如預期運作。它只會處理傳遞給它之值的前 32 個位元。
使用 %I32x 可顯示十六進位格式的 32 位元整數類型。
使用 %I64x 顯示十六進位格式的 64 位元整數類型。
%p (指標的十六進位格式) 在 64 位元 Windows 作業系統上將如預期運作。
如需詳細資訊,請參閱: