[define] création d'un symbole pointeur
Bonjour :D,
J'ai relevé sur un tutoriel web (dédié à la programmation sur console DS), l'instruction suivante :
Code:
1 2
| #define DISPLAY_CR (*(volatile unsigned int *) 0x4000000)
DISPLAY_CR = somevalue; |
Ce qui m'intrigue, c'est la double imbrication de la valeur dans des parenthèses, de plus avec les deux étoiles de pointeur.
J'ai alors consulté mon livre de référence sur le C : BestOf Langage C de Claude Delannoy. Malheureusement, le chapitre sur le préprocesseur ne m'a pas aidé à en comprendre davantage.
Je voudrais donc savoir, par quel "artifice" (par quelle règle), cette déclaration fait de DISPLAY_CR, une constante pointeur, afin de mieux en comprendre le mécanisme et l'adapter au besoin.
Je vous remercie d'avance. :D
P.S Ne me parlez pas de volatile : je sais déjà ce que c'est
Voici la réponse obtenue sur un forum anglophone
Rebonjour :D,
Finalement j'ai pu avoir la réponse sur le forum StackOverflow :
Code:
(volatile unsigned int *) 0x40000
Pour convertir la valeur en un pointeur sur cette adresse
Code:
*(volatile unsigned int *) 0x40000
Pour convertir le pointeur en une LValue
Code:
(*(volatile unsigned int *) 0x40000)
Pour éviter tout problème d'interprétation de la macro
Autrement dit, les deux lignes du précédent post donneront à peu près :
Code:
1 2
| volatile unsigned int *p = 0x40000
*p = someValue |