l'expression doit avoir le type intégral
Je reçois cette erreur de compilation à cause de cette ligne, qui vise à augmenter le pointeur par 0x200 (à point pour le segment suivant)
Flash_ptr = Flash_ptr + (unsigned char *) 0x200;
Je v vu cette mais je n'ai pas utilisé de manière illégale symbole!
P. S. de L'initialisation du pointeur:
unsigned char * Flash_ptr = (unsigned char *) 0x20000;
La langue ne permet pas d'ajouter des liens (il n'a pas beaucoup de sens). Vous pouvez ajouter intégrante de valeur.
OriginalL'auteur Ogee Gee | 2014-09-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas ajouter de deux pointeurs. Vous pouvez ajouter un entier à un pointeur, et vous pouvez soustraction de deux pointeurs pour obtenir un nombre entier de différence, mais l'ajout de deux pointeurs n'a pas de sens. Pour résoudre votre problème, par conséquent, vous avez juste besoin de retirer le plâtre:
Ce incréments
Flash_ptr
par 0x200 éléments, mais depuisFlash_ptr
est de typeunsigned char *
alors cela se traduit par une augmentation de la 0x200 octets.Afin de rendre cette partie de la boucle et à la vérification d'une limite supérieure que vous feriez quelque chose comme ceci:
Ne serait-il pas préférable de mentionner le pointeur non valide plus utilisé dans l'OP du code.
Vous avez besoin de convertir un des opérandes explicitement, par exemple
while((uintptr_t)Flash_ptr < 0x50000)
.Elle devrait être définie dans
<stdint.h>
et a été ajouté en C99. Dans le cas où vous utilisez C90, vous pouvez convertir en un autre (suffisamment grand) de type entier, ou vous pouvez le fairewhile(Flash_ptr < (unsigned char *)0x50000)
. Notez que cette dernière n'est pas définie si ils ne pointent pas dans la même (array) de l'objet.Non, pas sans plus de contexte. Si les adresses concernées sont valides, cela devrait fonctionner.
OriginalL'auteur Paul R
Vous ne pouvez pas ajouter deux pointeurs. Ce que vous pouvez faire est de incrément l'adresse tenue par le pointeur. Supprimer la
(unsigned char *)
exprimés.Si vous êtes intéressé, lisez plus sur pointeur arithmatic ici.
OriginalL'auteur Sourav Ghosh