Похоже, что ваша проблема может быть связана с заголовком или настройкой проекта, неправильно определяющими _WIN64
- это следует оставить компилятору.
Существует небольшая разница между WIN64
и _WIN64
(по крайней мере, для компиляторов Microsoft - другие компиляторы должны следовать их примеру, но не все делают):
_WIN64
определяется компилятором при создании программы для 64-битной платформы Windows. Обратите внимание, что это имя находится в пространстве имен разработчика компилятора (начальное подчеркивание и заглавная буква)
WIN64
определяется SDK платформы Windows (или как его там называют в этом году) при нацеливании на 64-битную платформу.
Так что, если вы используете только стандартные заголовки и не принимаете другие меры для его определения, WIN64
будет не определяться.
Существует аналогичная история для _WIN32
и WIN32
- но при проверке других компиляторов: GCC 3.4.5 определяет WIN32
, даже если используются только стандартные заголовки. Как и Цифровой Марс.
Компиляторы Microsoft и Comeau нет.
Еще один из (надеюсь) хорошо известных мелочей заключается в том, что _WIN32
и WIN32
устанавливаются при нацеливании на 64-битные платформы Windows. В противном случае слишком много вещей сломалось бы.