在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/