在Visual C++ 9中有诸如__w64之类的东西。我在尝试将 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

最佳答案

答案是,你不会。这是供32位编译器使用的编译器功能。最初的想法是Microsoft希望为即将到来的32-> 64位过渡做好准备。因此,32位编译器获得了将某些typedef标记为__w64的能力。然后,Microsoft使用该功能来标记将在Win64中更改的typedef。

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

10-11 22:08
查看更多