__w64

這個 Microsoft 特定的關鍵字已經過時。 在 Visual Studio 2013 之前的 Visual Studio 版本中,這可讓您標記變數,因此當您使用 /Wp64 進行編譯時,編譯器會報告使用 64 位編譯器編譯時所報告的任何警告。

語法

類型 __w64 識別碼

參數

type
這三種類型之一,可能會導致程式碼從 32 位移植到 64 位編譯器時發生問題: intlong 或指標。

identifier
您建立的變數的識別項。

備註

重要

/Wp64 編譯器選項和 __w64 關鍵字在 Visual Studio 2010 和 Visual Studio 2013 中已被取代,並從 Visual Studio 2013 開始移除。 如果您在命令列上使用 /Wp64 編譯器選項,編譯器會發出命令列警告 D9002。 關鍵字 __w64 會以無訊息方式忽略。 使用以 64 位平臺為目標的 Microsoft C++ 編譯器,而不是使用此選項和 關鍵字來偵測 64 位可攜性問題。 如需詳細資訊,請參閱 設定 64 位 x64 目標的 Visual C++。

其上的任何 __w64 typedef 都必須是 x86 上的 32 位,而 x64 上的 64 位則為 64 位。

若要使用 Visual Studio 2010 之前的 Microsoft C++ 編譯器版本來偵測可攜性問題, __w64 應在任何變更 32 位和 64 位平臺之間大小的 typedefs 上指定 關鍵字。 對於任何這類類型, __w64 必須只出現在 typedef 的 32 位定義上。

為了與舊版相容, 除非指定編譯器選項 /Za(停用語言延伸模組), 否則_w64 是 的 __w64 同義字。

如果編譯不使用 /Wp64 ,則會 __w64 忽略 關鍵字。

如需移植至 64 位元的詳細資訊,請參閱下列主題:

範例

// __w64.cpp
// compile with: /W3 /Wp64
typedef int Int_32;
#ifdef _WIN64
typedef __int64 Int_Native;
#else
typedef int __w64 Int_Native;
#endif

int main() {
   Int_32 i0 = 5;
   Int_Native i1 = 10;
   i0 = i1;   // C4244 64-bit int assigned to 32-bit int

   // char __w64 c;  error, cannot use __w64 on char
}

另請參閱

關鍵字