Поделиться через


Общие вопросы использования Visual C++ для 64-разрядных систем

При использовании Visual C++ для создания приложений, запуск которых планируется в 64-разрядной версии ОС Windows, следует знать следующее.

  • В 64-разрядных версиях Windows int и long являются 32-разрядными значениями.В программах, которые планируется компилировать для 64-разрядных платформ, не следует назначать указателям 32-разрядные переменные.В 64-разрядных платформах указатели являются 64-разрядными, поэтому значение указателя будет усечено, если назначить ему 32-разрядную переменную.

  • В 64-разрядных версиях Windows size_t, time_t и ptrdiff_t являются 64-разрядными значениями.

  • В версиях Visual C++ до Visual C++ 2005 time_t является 32-разрядным значением в 32-разрядных версиях Windows.Теперь time_t по умолчанию представляет собой 64-разрядное целое число.Дополнительные сведения см. в разделе Управление временем.

    Следует знать, где ваш код принимает значение int и обрабатывает его как значение size_t или time_t.Разрядность может превысить 32 бита. В этом случае данные будут усечены при их возвращении в хранилище int.

Модификатор %x printf (шестнадцатеричный формат int) не будет действовать в 64-разрядных версиях Windows ожидаемым образом.Он будет обрабатывать только первые 32 бита передаваемого ему значения.

  • Для отображения 32-разрядных целочисленных типов в шестнадцатеричном формате используйте модификатор %I32x.

  • Для отображения 64-разрядных целочисленных типов в шестнадцатеричном формате используйте модификатор %I64x.

  • Модификатор %p (шестнадцатеричный формат для указателя) в 64-разрядных версиях Windows действует правильно.

Дополнительные сведения:

См. также

Другие ресурсы

Настройка программы, 64 (Visual C++)

Перенос и обновление программ