Share via


Visual C++ 64 位元移轉時常見的問題

更新:2007 年 11 月

當您使用 Visual C++ 建立在 64 位元 Windows 作業系統上執行的應用程式時,請留意下列問題:

  • 在 64 位元 Windows 作業系統上 int 和 long 為 32 位元的值。對於您想要針對 64 位元平台編譯的程式,請小心不要將指標指派給 32 位元的變數。指標在 64 位元平台上是 64 位元,如果將指標指派給 32 位元變數,則會導致指標值遭截斷。

  • 在 64 位元 Windows 作業系統上,size_ttime_tptrdiff_t 為 64 位元的值。

  • 在 Visual C++ 2005 之前的 Visual C++ 版本中,time_t 在 32 位元 Windows 作業系統上為 32 位元的值。在 Visual C++ 2005 (含) 以後版本中,time_t 預設是 64 位元整數。如需詳細資訊,請參閱時間管理

    您應該要注意程式碼中使用 int 值並將值做為 size_ttime_t 值處理的地方。可能的情況是,數字會擴增為大於 32 位元的數字,且資料在傳回 int 儲存體時會被截斷。

%x (十六進位 int 格式) printf 修飾詞在 64 位元 Windows 作業系統上,會無法如預期般運作。此修飾詞只能作用在傳入值的前 32 個位元。

  • 使用 %I32x,在 Windows 32 位元作業系統上顯示整數。

  • 使用 %I64x,在 Windows 64 位元作業系統上顯示整數。

  • %p (指標的十六進位格式) 在 64 位元 Windows 作業系統上將可達到預期作用。

如需詳細資訊,請參閱:

請參閱

其他資源

使用 Visual C++ 進行 64 位元程式設計

移植和升級程式