avertissement: pointeur de type ‘void *’ utilisé dans l'arithmétique

Je suis de l'écriture et de la lecture des registres de la mémoire de la carte, comme ceci:

//READ
return *((volatile uint32_t *) ( map + offset ));

//WRITE
*((volatile uint32_t *) ( map + offset )) = value;

Cependant, le compilateur me donne des avertissements comme ceci:

warning: pointer of type void *’ used in arithmetic [-Wpointer-arith]

Comment puis-je modifier mon code pour enlever les avertissements? Je suis à l'aide de C++ et Linux.

fonte à char* - en supposant que vous voulez byte décalage. faites-vous?
Oui, c'est à droite de la carte est de type void*, merci.
Vous avez besoin de jeter map à un pointeur vers un type de taille 1. Le seul type de garantie par la norme pour être de taille 1 est char, donc vous devez le convertir en char*.
char et les variantes (signed char, unsigned char), de sorte que c'est une coqueluche 3 types de taille 1!

OriginalL'auteur user1876942 | 2014-11-05