__w64
此 Microsoft 专用关键字已过时。 在 Visual Studio 2013 之前的版本中,允许标记变量,以确保在使用 /Wp64 进行编译时,编译器将报告使用 64 位编译器编译时可能报告的任何警告。
语法
类型
__w64
标识符
参数
type
可导致在从 32 位编译器移植到 64 位编译器时出现问题的三种类型之一:int
、long
或指针。
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
}
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈