Partager via


Problèmes courants de migration vers Visual C++ 64 bits

Mise à jour : novembre 2007

Lorsque vous utilisez Visual C++ pour créer des applications qui s'exécuteront sur un système d'exploitation Windows 64 bits, considérez les points suivants :

  • int et long sont des valeurs 32 bits sur les systèmes d'exploitation Windows 64 bits. Pour les programmes que vous avez l'intention de compiler pour des plateformes 64 bits, vous devez veiller à ne pas assigner de pointeurs à des variables 32 bits. Les pointeurs sont des valeurs 64 bits sur les plateformes 64 bits, et vous tronquez la valeur du pointeur si vous l'assignez à une variable 32 bits.

  • size_t, time_t et 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 les versions de Visual C++ antérieures à Visual C++ 2005. Dans Visual C++ 2005 et les versions ultérieures, time_t est un entier 64 bits par défaut. Pour plus d'informations, consultez Gestion de la durée de vie.

    Vous devez savoir dans quelles circonstances votre code prend une valeur int et la traite comme une valeur size_t ou time_t. En effet, il est possible que le nombre augmente jusqu'à dépasser la taille d'un nombre 32 bits ; les données sont alors tronquées lorsqu'elles sont renvoyées vers le stockage int.

Le modificateur printf %x (format int hexadécimal) 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 entier sur un système d'exploitation Windows 32 bits.

  • Utilisez %I64x pour afficher un entier sur un système d'exploitation Windows 64 bits.

  • 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 :

Voir aussi

Autres ressources

Programmation 64 bits avec Visual C++

Portage et mise à niveau de programmes