Visual C++ 64 位元移轉時常見的問題
當您使用 Visual C++ 建立在 64 位元 Windows 作業系統上執行的應用程式時,請留意下列問題:
在 64 位元 Windows 作業系統上 int 和 long 為 32 位元的值。 對於您想要針對 64 位元平台編譯的程式,請小心不要將指標指派給 32 位元的變數。 指標在 64 位元平台上是 64 位元,如果將指標指派給 32 位元變數,則會導致指標值遭截斷。
在 64 位元 Windows 作業系統上,size_t、time_t 和 ptrdiff_t 為 64 位元的值。
在 Visual C++ 2005 之前的 Visual C++ 版本中,time_t 在 32 位元 Windows 作業系統上為 32 位元的值。 time_t 現在預設為 64 位元整數。 如需詳細資訊,請參閱時間管理。
您應該要注意程式碼中使用 int 值並將值做為 size_t 或 time_t 值處理的地方。 可能的情況是,數字會擴增為大於 32 位元的數字,且資料在傳回 int 儲存體時會被截斷。
%x (十六進位 int 格式) printf 修飾詞在 64 位元 Windows 作業系統上,會無法如預期般運作。 此修飾詞只能作用在傳入值的前 32 個位元。
使用 %I32x,在 Windows 32 位元作業系統上顯示整數。
使用 %I64x,在 Windows 64 位元作業系統上顯示整數。
%p (指標的十六進位格式) 在 64 位元 Windows 作業系統上將可達到預期作用。
如需詳細資訊,請參閱: