0

我想在 Visual C 中定义32(32 位编译)和64(64 位编译)。是否有任何预定义的宏?我徒劳地浏览了MSDN。

你认为这种对3264的定义行得通吗?

#define _32_ if !(defined __LP64__ || defined __LLP64__) || defined _WIN32 && !defined _WIN64
        // we are compiling for a 32-bit system
the else statement will be _64_ definition
        // we are compiling for a 64-bit system

谢谢!

4

4 回答 4

4

文档

_M_IX86:为 x86 处理器定义。...这不是为 x64 处理器定义的。

_M_X64:为 x64 处理器定义。

_M_IA64:为安腾处理器系列 64 位处理器定义。

_WIN32:为 Win32 和 Win64 的应用程序定义。始终定义。

_WIN64:为 Win64 应用程序定义。

任你选。

于 2012-08-01T03:27:24.377 回答
1

您可能会在尝试枚举所有可能的处理器架构并了解它们的 int 大小时陷入困境,但我建议您使用_WIN64,它是在您在任何处理器上构建 64 位可执行文件时定义的,而不是在您“重新构建 32 位。

Visual C++ 很早以前就已经支持它了——甚至可能是 Visual C++ 2003。

于 2012-08-01T03:28:06.127 回答
1

总是有 _WIN64 预处理器宏。Raymond Chen 很好地涵盖了这个主题:http: //blogs.msdn.com/b/oldnewthing/archive/2006/09/06/742710.aspx

于 2012-08-01T03:32:25.007 回答
0

如果你查看MSDN,它说_M_X64是为 64 位处理器定义的。

于 2012-08-01T03:29:09.433 回答