c++ - 我如何在 VC++ 中使用 _W64 和 __w64?

标签 c++ visual-studio visual-studio-2008 visual-c++ 64-bit

有这样的东西 __w64在 Visual C++ 9 中。我在尝试将我的 native C++ DLL 移植到 64 位时遇到了它。特别是在 crtdefs.h 中有这个不错的片段:

#if !defined(_W64)
#if !defined(__midl) && (defined(_X86_) || defined (_M_IX86)) && _MSC_VER >= 1300
#define _W64 __w64
#else
#define _W64
#endif
#endif

如果我没看错的话,这意味着对于 64 位 _W64 被定义为一个空字符串并且没有任何效果,但是对于 32 位它被定义为 __w64

我尝试将 _W64 定义为空字符串,然后依次将 __w64 定义为空字符串,至少这两次项目在 64 位配置中都能正常编译。

也就是说 _W64__w64 看起来都没用。我打算如何使用它们以及我应该如何在 64 位项目中定义 _W64

最佳答案

__w64 用于标记在 32 位和 64 位环境中具有不同大小的类型。当您将可能为 64 位的类型分配给 32 位类型时,编译器可能会发出警告。

如果切换 MSDN: __w64查看最新版本,可以看到该关键字已弃用。当您尝试使用/Wp64 选项进行编译时,VC9 甚至会生成警告。

关于c++ - 我如何在 VC++ 中使用 _W64 和 __w64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686332/

相关文章:

c++ - 如何覆盖 C++ 标准库类函数?

visual-studio - 如何在 VS2019 CMAKE 中使用 Clang-CL LLVM?

visual-studio - Xamarin.Forms Android 应用程序在启动时崩溃(仅在发布版本中)

visual-studio - 如何在 Visual Studio 中自动生成多个 getter/setter 或访问器

c# - 在 C# 中的数据表中的特定位置填充数据

c++ - 在非托管代码中创建和更新性能计数器的好引用是什么?

c++ - 加密货币在编译时出现错误

c++ - 从 Vector 中删除一个元素并将其余元素向下移动 - C++

c# - 从另一个项目的可执行文件启动一个项目的可执行文件

windows - 为 Visual Studio 项目创建 Windows 安装程序