Компиляторы Visual Studio (с 2005 по 2008 год) определяют четыре макроса для x86/x64-битной среды. См. Предопределенные макросы
- _M_X64 Определено для процессоров x64.
- _M_IX86 Определено для процессоров x86. Дополнительную информацию см. в таблице значений для _M_IX86 ниже. Это не определено для процессоров x64.
- _WIN32 Определено для приложений для Win32 и Win64. Всегда определяется.
- _WIN64 Определено для приложений для Win64.
Теперь на 32-битной машине _M_X64 никогда не будет установлен. На 64-битной машине, если вы строите 32-битную среду, _M_X64 будет не установлен, а _M_IX86 будет определен. _WIN32 всегда определяется независимо от 32/64-битной сборки.
Имеет ли значение _M_X64 особое значение для всех процессоров x64? Может ли быть сценарий, когда _M_X64 не определено, когда цель - x64?