Действительно ли возможно проверить, создаете ли Вы для 64-разрядного с Компилятором Microsoft C?

Fiddler - действительно полезный инструмент, вы можете создавать HTTP-запросы на основе XML с различными глаголами запросов, такими как GET, POST, PUT, DELETE и т. Д.

http://www.fiddler2.com/fiddler2/

9
задан dreamlax 30 October 2009 в 03:52
поделиться

4 ответа

Я всегда использовал _WIN64, чтобы проверить, является ли это 64-битной сборкой.

NB _WIN32 также всегда (автоматически) определяется MSVC в 64-битных сборках, поэтому проверьте _WIN64 перед тем, как вы проверьте _WIN32:

#if defined( _WIN64 )

// Windows 64 bit code here

#elif defined( _WIN32 )

// Windows 32 bit code here

#else

// Non-Windows code here

#endif
18
ответ дан 4 December 2019 в 06:26
поделиться

Похоже, ваша проблема может быть связана с заголовком или настройкой проекта, неправильно определяющим _WIN64 - это следует оставить компилятору.

Есть тонкая разница между WIN64 и _WIN64 (по крайней мере, для компиляторов Microsoft - другие компиляторы должны последовать их примеру, но не все):

  • _WIN64 определяется компилятором при создании программы для 64-разрядной платформы Windows. Обратите внимание, что это имя находится в пространстве имен разработчика компилятора (начальное подчеркивание, за которым следует заглавная буква)
  • WIN64 определяется Windows Platform SDK (или как там это называется в этом году) при нацеливании на 64-битную платформу.

Итак, если вы включаете только стандартные заголовки и не t принять другие меры для его определения, WIN64 не будет , а не .

Аналогичная история для _WIN32 и WIN32 - но проверка других компиляторов: GCC 3.4.5 действительно определяет WIN32 , даже если используются только стандартные заголовки. Как и Digital Mars.

Компиляторы Microsoft и Comeau этого не делают.

Еще одна известная мелочь (надеюсь) заключается в том, что _WIN32 и WIN32 установлены при ориентации на 64- бит платформы Windows. В противном случае было бы сломано слишком много вещей.

5 действительно определяет WIN32 , даже если используются только стандартные заголовки. Как и Digital Mars.

Компиляторы Microsoft и Comeau этого не делают.

Еще одна известная мелочь (надеюсь) заключается в том, что _WIN32 и WIN32 установлены при ориентации на 64- бит платформы Windows. В противном случае было бы сломано слишком много вещей.

5 действительно определяет WIN32 , даже если используются только стандартные заголовки. Как и Digital Mars.

Компиляторы Microsoft и Comeau этого не делают.

Еще одна известная мелочь (надеюсь) заключается в том, что _WIN32 и WIN32 установлены при ориентации на 64- бит платформы Windows. В противном случае было бы сломано слишком много вещей.

10
ответ дан 4 December 2019 в 06:26
поделиться

Компилятор Visual C ++ определяет следующие макросы:

  • _M_IX86 - платформа x86
  • _M_IA64 - платформа ia64
  • _M_X64 - платформа x64
8
ответ дан 4 December 2019 в 06:26
поделиться

Проверьте свойства сборки вашего проекта, особенно секцию препроцессора. Вы определяете _WIN64 где-нибудь в сборках WIN32 ? Параметр sizeof , вероятно, не будет работать, поскольку вы не можете использовать его в тесте #if .

2
ответ дан 4 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: