dre*_*lax 9 c windows 64-bit visual-c++
是否有为64位版本定义的简单预处理器宏?我认为_WIN64
可能是它,但即使我构建一个32位目标,包含在a #ifdef _WIN64 ... #endif
中的部分也会编译进来,这会导致问题.这是周五,我不能直接思考,但我确信我在这里忽略了一些非常简单的事情.甚至一些涉及sizeof
.
Bru*_*kin 18
我一直使用_WIN64来检查它是否是64位版本.
NB _WIN32也始终(自动)由64位版本中的MSVC定义,因此在检查_WIN32之前检查_WIN64:
#if defined( _WIN64 )
// Windows 64 bit code here
#elif defined( _WIN32 )
// Windows 32 bit code here
#else
// Non-Windows code here
#endif
Run Code Online (Sandbox Code Playgroud)
Mic*_*urr 10
听起来你的问题可能与标题或项目设置不正确的定义有关_WIN64
- 应留给编译器.
WIN64
和之间有一个微妙的区别_WIN64
(至少对于Microsoft编译器 - 其他编译器应该效仿,但并非所有编译器都这样做):
_WIN64
由编译器在为Windows 64位平台构建程序时定义.请注意,此名称位于编译器实现者的命名空间中(前导下划线后跟大写字母)WIN64
在定位64位平台时,由Windows平台SDK(或他们今年称之为的任何东西)定义.因此,如果您只包含标准标题并且不采取其他措施来定义它,WIN64
则不会定义.
有一个类似的故事_WIN32
和WIN32
- 但检查其他编译器:GCC 3.4.5确实定义WIN32
即使只使用标准头.和数字火星一样.
微软的编译器和Comeau没有.
另一点(希望)众所周知的琐事是,_WIN32
并且WIN32
在针对64位Windows平台时设置.否则会有太多东西破碎.
小智 8
Visual C++编译器定义以下宏:
归档时间: |
|
查看次数: |
8522 次 |
最近记录: |