Общие вопросы использования 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 действует правильно.
Дополнительные сведения: