Maison > Article > développement back-end > Comment puis-je convertir un pointeur en entier pour une compatibilité 32/64 bits ?
Lors de l'adaptation du code existant aux machines 64 bits, un défi courant consiste à convertir un argument void* en un type compatible dans une fonction. Pour résoudre ce problème, explorons une solution propre.
Une approche consiste à exploiter les techniques C modernes. Par exemple, on peut utiliser les types uintptr_t ou intptr_t, qui sont conçus pour représenter des valeurs entières pouvant contenir des valeurs de pointeur. Pour convertir un pointeur en uintptr_t, reinterpret_cast est la méthode appropriée :
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
Cette approche garantit la compatibilité sur les machines 32 et 64 bits, vous permettant d'accéder et de manipuler en toute sécurité les valeurs du pointeur sous forme d'entiers dans la fonction. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!