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

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

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

  • size_t, time_t и ptrdiff_t — это 64-разрядные значения в 64-разрядных операционных системах Windows.

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

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

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

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

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

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

Дополнительные сведения см. в следующих разделах.

См. также

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

Программирование для 64-разрядных систем на Visual C++

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