Problèmes courants de migration vers Visual C++ 64 bits
Lorsque vous utilisez le compilateur Microsoft C++ (MSVC) pour créer des applications à exécuter sur un système d’exploitation Windows 64 bits, vous devez connaître les problèmes suivants :
int
etlong
sont des valeurs 32 bits sur les systèmes d'exploitation Windows 64 bits. Pour les programmes que vous prévoyez de compiler pour des plateformes 64 bits, veillez à ne pas assigner de pointeurs à des variables 32 bits. Les pointeurs sont des valeurs 64 bits sur les plateformes 64 bits et vous tronquerez la valeur d'un pointeur si vous l'assignez à une variable 32 bits.size_t
,time_t
etptrdiff_t
sont des valeurs 64 bits sur les systèmes d’exploitation Windows 64 bits.time_t
est une valeur 32 bits sur les systèmes d’exploitation Windows 32 bits dans Visual Studio 2005 et versions antérieures.time_t
est maintenant un entier 64 bits par défaut. Pour plus d’informations, consultez Gestion du temps.Vous devez savoir dans quels cas votre code prend une valeur
int
et la traite comme une valeursize_t
outime_t
. En effet, le nombre peut augmenter au point de dépasser la taille d'un nombre 32 bits. Dans ce cas, les données sont tronquées quand elles sont renvoyées vers le stockageint
.
Le modificateur %x (format int
hexadécimal) printf
ne fonctionne pas comme prévu sur un système d'exploitation Windows 64 bits. Il ne fonctionne que sur les 32 premiers bits de la valeur qui lui est passée.
Utilisez %I32x pour afficher un type intégral 32 bits au format hexadécimal.
Utilisez %I64x pour afficher un type intégral 64 bits au format hexadécimal.
Le %p (format hexadécimal pour un pointeur) fonctionnera comme prévu sur un système d'exploitation Windows 64 bits.
Pour plus d’informations, consultez l’article suivant :
Voir aussi
Configurer des projets C++ pour des cibles x64 64 bits
Guide du portage et de la mise à niveau de Visual C++