__w64

(Microsoft 固有の仕様) このキーワードは廃止されています。 Visual Studio 2013 より前のバージョンの Visual Studio では、/Wp64 でコンパイルするとき、64 ビット コンパイラでコンパイルする場合に報告される警告が出力されるように、変数に付加できます。

        type __w64 identifier

パラメーター

  • type
    32 ビット コンパイラから 64 ビット コンパイラに移植されるコードで問題を発生させる可能性がある 3 つの型のいずれか (int、long、またはポインター)。

  • identifier
    作成中の変数の識別子。

解説

重要

/Wp64 コンパイラ オプションと __w64 キーワードは、Visual Studio 2010 および Visual Studio 2013 では使用されなくなり、Visual Studio 2013 以降では削除されています。コマンド ラインから /Wp64 コンパイラ オプションを使用すると、コンパイラはCommand-Line Warning D9002 を発行します。__w64 キーワードは自動的に無視されます。64 ビットの移植性の問題を検出するには、このオプションとキーワードを使用する代わりに、64 ビット プラットフォームが対象の Visual C++ コンパイラを使用してください。詳細については、「64 ビット用プログラムの構成 (Visual C++)」を参照してください。

__w64 が付加された typedef は、x86 上では 32 ビット、x64 上では 64 ビットである必要があります。

Visual Studio 2010 より前のバージョンの Visual C++ コンパイラを使用して移植性の問題を検出するためには、32 ビット プラットフォームと 64 ビット プラットフォームの間でサイズを変更するすべての typedef に __w64 キーワードを付加する必要があります。 このような型の場合、__w64 は typedef の 32 ビット定義にのみ付加する必要があります。

__w64 キーワードは、コンパイル時に /Wp64 が使用されない場合は無視されます。

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
}

参照

関連項目

C++ キーワード