__w64

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

構文

type__w64identifier

パラメーター

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

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

解説

重要

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

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

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

以前のバージョンとの互換性を確保するために、_w64 は、コンパイラ オプション /Za (言語拡張機能の無効化) が指定されていない限り、__w64 のシノニムです。

__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
}

関連項目

キーワード