Partager via


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 et long 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_tet ptrdiff_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 valeur size_t ou time_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 stockage int.

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++