Oui, cela signifie que PUINT_PTR
est un pointeur et UINT_PTR
n'est pas un pointeur. C'est un peu déroutant, mais un UINT_PTR
(ainsi que le plus normalisé uintptr_t
) est défini comme un entier non signé dont la taille est suffisante pour contenir une valeur de pointeur. Il est généralement utilisé pour le code délicat où les pointeurs sont mis en valeurs entières et vice-versa. L'annotation _W64
est une note du compilateur Miscrosoft qui, lors de la compilation pour une cible 64 bits, doit avoir une largeur de 64 bits au lieu de 32, car sur les plateformes 64 bits, les pointeurs sont 64 bits, mais unsigned int
s sont généralement encore 32 bits. Cela garantit que sizeof(UINT_PTR) >= sizeof(void*)
pour toutes les plates-formes cibles.
La deuxième déclaration déclare simplement PUINT_PTR
comme pointeur vers un _W64 unsigned int
, ou plus précisément un pointeur vers un UINT_PTR
.