有这样的东西 __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/