Maison > développement back-end > C++ > Comment puis-je convertir en toute sécurité un pointeur void* en entier en C ?

Comment puis-je convertir en toute sécurité un pointeur void* en entier en C ?

Patricia Arquette
Libérer: 2024-11-12 10:52:02
original
748 Les gens l'ont consulté

How can I safely convert a void* pointer to an integer in C  ?

Conversion d'un pointeur en un entier

Dans une situation où un argument void* doit être converti en un type approprié, il est crucial de assurer la compatibilité entre différentes architectures de machines.

Sur une machine 64 bits, la conversion d'un void* en un int peut entraîner une perte de précision. Pour résoudre ce problème, une approche C moderne consiste à utiliser reinterpret_cast. Cela garantit une conversion portable et efficace.

Type entier correct :

Pour stocker correctement un pointeur sous forme d'entier, le type approprié est uintptr_t ou intptr_t, défini dans < ;stdint.h> pour C99 ou l'espace de noms std pour C 11.

  • C 11 (et versions ultérieures) : std::uintptr_t
  • C 03 : uintptr_t (encapsulé dans extern "C" { si nécessaire })
  • C99 : uintptr_t

Opérateur de diffusion correct :

En C , reinterpret_cast est la distribution préférée pour les conversions de pointeurs. Évitez d'utiliser le casting C.

Exemple :

#include <cstdint>

void *p;
std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
Copier après la connexion

Questions connexes :

  • Quel est le Type de données uintptr_t ?

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal