__w64

此 Microsoft 专用关键字已过时。 在 Visual Studio 2013 之前的版本中,允许标记变量,以确保在使用 /Wp64 进行编译时,编译器将报告使用 64 位编译器编译时可能报告的任何警告。

语法

类型__w64标识符

参数

type
可导致在从 32 位编译器移植到 64 位编译器时出现问题的三种类型之一:intlong 或指针。

identifier
要创建变量的标识符。

注解

重要

/Wp64 编译器选项和 __w64 关键字在 Visual Studio 2010 和 Visual Studio 2013 中已弃用,并从 Visual Studio 2013 起删除。 如果在命令行中使用 /Wp64 编译器选项,编译器将发出命令行警告 D9002。 __w64 关键字会自动忽略。 请勿使用此选项和关键字来检测 64 位可移植性问题,请使用面向 64 位平台的 Visual C++ 编译器。 有关详细信息,请参阅为 64 位配置 Visual C++,面向 x64

任何具有 __w64 的 typedef 都必须在 x86 上是 32 位,在 x64 上是 64 位。

若要通过使用早于 Visual Studio 2010 的 Visual C++ 编译器版本来检测可移植性问题,应在任何可跨 32 位平台与 64 位平台变换大小的 typedef 上指定 __w64 关键字。 对于任何此类类型,__w64 必须仅在 typedef 的 32 位定义上出现。

为了与以前的版本兼容,_w64 是 __w64 的同义词,除非指定了编译器选项 /Za(禁用语言扩展)

如果编译不使用 /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
}

另请参阅

关键字