我在 VS2010 中创建了一个新的 c++ 项目。我添加了 x64 作为新的解决方案平台。我尝试将“复制设置从”设置为“Win32”和“空”,但都没有成功。_AMD64_
当我选择 x64 作为平台时未定义。不应该吗?对于 64 位的编译,是否还有另一个我不知道的步骤?
期待问题:我使用的是VS2010 Ultimate,Windows 7 64bit,在VS安装期间选择了x64编译器。
我在 VS2010 中创建了一个新的 c++ 项目。我添加了 x64 作为新的解决方案平台。我尝试将“复制设置从”设置为“Win32”和“空”,但都没有成功。_AMD64_
当我选择 x64 作为平台时未定义。不应该吗?对于 64 位的编译,是否还有另一个我不知道的步骤?
期待问题:我使用的是VS2010 Ultimate,Windows 7 64bit,在VS安装期间选择了x64编译器。
您已正确完成所有步骤。默认情况下,Visual Studio 未预定义符号_AMD64_
。如果你想使用它,你需要自己定义它:
#if defined _M_X64 || defined _M_AMD64
#define _AMD64_
#endif
但你并没有弥补它存在的记忆。除了其他一些符号之外,Windows DDK 还附带定义此符号的生成文件。入住makefile.def
。可能性是:
_X86_
各种称为 x86、i386 和 IA-32
(这与 VS 的预定义相同_M_IX86
)
_AMD64_
各种称为 AMD64、x64、x86-64、IA-32e 和 Intel 64
(这与 VS 的预定义_M_X64
和相同_M_AMD64
)
_IA64_
Intel Itanium (IA-64)
(这个和VS的预定义一样_M_IA64
)
…以及其他一些架构不再针对的目标
理想情况下,您将配置您的构建系统以预定义一组已知的宏,然后您将在自己的代码中使用这些宏。如果您没有构建系统,至少在预编译的头文件中设置一些内容。这样,您就不会到处依赖实现相关的符号,切换编译器也不是一件繁琐的工作——例如,GCC 预定义的目标体系结构符号与 MSVC 非常不同。