73Fermer75
Lionel DebrouxLe 02/09/2010 à 16:21
(long)(short)((short)(i)*sizeof(*(p))) calcule le nombre d'octets qu'il faut pour arriver au i-ième élément d'un tableau de choses de type *p.
Ensuite, tu ajoutes ça à un pointeur vers un unsigned char, pour obtenir l'adresse absolue du i-ème élément du tableau de choses de type *p commençant à l'adresse p, sous forme de pointeur vers un unsigned char.
Et le truc bizarre devant ce que je viens de décrire, est juste une façon de convertir ce pointeur vers un unsigned char en un pointeur vers un type p (avec la petite finesse &*, nécessaire pour que la macro puisse traiter certains types de tableaux), puis de le déréférencer.
p[ i ], c'est à dire, *(p+i), c'est bien ce que tu voulais faire, non ? grin


Vu qu'en C, il n'y a pas de paramètres génériques (templates) pour les fonctions, je vois mal comment se passer d'une macro embarrassed
Si tu passes un jour à un langage où il n'y a pas de préprocesseur, tu verras que tu regretteras ce bon vieux préprocesseur grin