Microsoft 固有の仕様Microsoft Specific

このキーワードは廃止されています。This keyword is obsolete. Visual Studio 2013 より前のバージョンの Visual Studio でこれにより、変数でコンパイルするときように/Wp64コンパイラは 64 ビット コンパイラでコンパイルする場合に報告されるすべての警告を報告します。In versions of Visual Studio earlier than Visual Studio 2013, this lets you mark variables, so that when you compile with /Wp64 the compiler will report any warnings that would be reported if you were compiling with a 64-bit compiler.


type __w64 identifiertype __w64 identifier


32 ビットから 64 ビット コンパイラに移植されるコードで問題を引き起こす可能性のある 3 つの種類のいずれか: int長い、またはポインター。One of the three types that could cause problems in code being ported from a 32-bit to a 64-bit compiler: int, long, or a pointer.

作成中の変数の識別子。The identifier for the variable you are creating.



/Wp64コンパイラ オプションと _ _w64キーワードは、Visual Studio 2010 および Visual Studio 2013 では非推奨し、Visual Studio 2013 以降では削除します。The /Wp64 compiler option and __w64 keyword are deprecated in Visual Studio 2010 and Visual Studio 2013 and removed starting in Visual Studio 2013. 使用する場合、/Wp64コマンドライン、コンパイラでコンパイラ オプションは、コマンドラインの警告 D9002 を発行します。If you use the /Wp64 compiler option on the command line, the compiler issues Command-Line Warning D9002. _ _W64キーワードが暗黙的に無視されます。The __w64 keyword is silently ignored. 64 ビット移植に関する問題を検出するためにこのオプションとキーワードを使用する代わりに、Microsoft を使用して、C++を 64 ビット プラットフォームを対象とするコンパイラ。Instead of using this option and keyword to detect 64-bit portability issues, use a Microsoft C++ compiler that targets a 64-bit platform. 詳細については、次を参照してください。 Visual c の 64 ビット x64 構成ターゲットします。For more information, see Configure Visual C++ for 64-bit, x64 targets.

持つ任意の typedef _ _w64 x86 上で 32 ビットと 64 ビット x64 でそれにする必要があります。Any typedef that has __w64 on it must be 32 bits on x86 and 64 bits on x64.

Microsoft のバージョンを使用して移植性の問題を検出するためにC++コンパイラ、Visual Studio 2010 より前、 _ _w64 32 ビットと 64 ビット プラットフォーム間でサイズを変更するすべての typedef でキーワードを指定する必要があります。To detect portability issues by using versions of the Microsoft C++ compiler earlier than Visual Studio 2010, the __w64 keyword should be specified on any typedefs that change size between 32 bit and 64 bit platforms. このような型 _ _w64 typedef の 32 ビット定義にのみ表示する必要があります。For any such type, __w64 must appear only on the 32-bit definition of the typedef.

以前のバージョンとの互換性のため _w64のシノニムです _ _w64しない限り、コンパイラ オプション/Za(言語拡張機能を無効にする)を指定します。For compatibility with previous versions, _w64 is a synonym for __w64 unless compiler option /Za (Disable language extensions) is specified.

_ _W64キーワードは、コンパイルを使用しない場合無視/Wp64します。The __w64 keyword is ignored if the compilation does not use /Wp64.

64 ビットへの移植の詳細については、次のトピックを参照してください。For more information about porting to 64-bit, see the following topics:


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

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

関連項目See also