4

我在 VS2010 中创建了一个新的 c++ 项目。我添加了 x64 作为新的解决方案平台。我尝试将“复制设置从”设置为“Win32”和“空”,但都没有成功。_AMD64_当我选择 x64 作为平台时未定义。不应该吗?对于 64 位的编译,是否还有另一个我不知道的步骤?

期待问题:我使用的是VS2010 Ultimate,Windows 7 64bit,在VS安装期间选择了x64编译器。

4

1 回答 1

6

您已正确完成所有步骤。默认情况下,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 非常不同。

于 2013-07-20T11:23:38.757 回答