gpt4 book ai didi

c++ - _M_X64 是否可以在 x64 处理器上取消设置?

转载 作者:可可西里 更新时间:2023-11-01 09:48:15 37 4
gpt4 key购买 nike

Visual Studio 编译器(2005 到 2008)为 x86/x64 位环境定义了四个宏。引用Predefined Macros

  • _M_X64 为 x64 处理器定义。
  • _M_IX86 为 x86 处理器定义。有关详细信息,请参阅下面的 _M_IX86 值表。这不是为 x64 处理器定义的。
  • _WIN32 为 Win32 和 Win64 应用程序定义。总是定义。
  • _WIN64 为 Win64 应用程序定义。

现在在 x32 位机器上永远不会设置 _M_X64。在 64 位机器上,如果您在 32 位环境中构建,_M_X64 将被取消设置,而 _M_IX86 将被定义。 _WIN32 始终被定义,与 32/64 位版本无关。

在所有 x64 处理器中,_M_X64 是否有特殊意义?当目标为 x64 时,会出现未定义 _M_X64 的情况吗?

最佳答案

Now on a x32 bit machine _M_X64 would never be set

这不是它的工作原理。您使用的编译器为特定的目标架构生成代码,它不关心您的机器。在 32 位机器上生成 x64 代码是很有可能的,MSVC 包含一个可以在 32 位操作系统上运行并生成 x64 代码的交叉编译器。它有一个生成 x64 代码的 64 位编译器。 IDE 设置为实际使用交叉编译器,而不管您的操作系统如何。

在VS安装目录的vc\bin子目录下可以看到这些编译器安装在你的机器上。该目录包含生成 x86 代码的 32 位编译器。 x86_amd64 子目录有一个生成 x64 代码的 32 位编译器。 amd64 子目录有一个生成 x64 代码的 64 位编译器。如果您有用于 ARM 内核的编译器,则那里可能存在其他目录。始终是交叉编译器。

你问的宏名是预定义的宏,完整列表is here . _M_X64 宏始终由任何生成 x64 代码的编译器定义。

关于c++ - _M_X64 是否可以在 x64 处理器上取消设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12109978/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com