共用方式為


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

當您使用 Microsoft C++ 編譯器 (MSVC) 建立要在 64 位 Windows 作業系統上執行的應用程式時,您應該注意下列問題:

  • intlong 是 64 位元 Windows 作業系統上的 32 位元值。 對於您要為 64 位元平台進行編譯的程式,您應小心不要將指標指派給 32 位元變數。 指標在 64 位元平台上是 64 位元的,如果您將指標指派給 32 位元變數,將會截斷指標值。

  • size_ttime_tptrdiff_t 是 64 位 Windows 作業系統上的 64 位值。

  • time_t 是 Visual Studio 2005 和更早版本中 32 位 Windows 作業系統上的 32 位值。 time_t 現在預設為 64 位元整數。 如需詳細資訊,請參閱 時間管理

    您應注意程式碼在何處取用 int 值,並將其視為 size_ttime_t 值來處理。 此數值可能會成長而大於 32 位元數值,且資料在傳回至 int 儲存體時將會截斷。

%x (十六進位 int 格式) printf 修飾詞在 64 位元 Windows 作業系統上將無法如預期運作。 它只會處理傳遞給它之值的前 32 個位元。

  • 使用 %I32x 可顯示十六進位格式的 32 位元整數類型。

  • 使用 %I64x 顯示十六進位格式的 64 位元整數類型。

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

如需詳細資訊,請參閱

另請參閱

設定適用於 64 位元、x64 目標的 C++ 專案
Visual C++ 移植和升級指南