est valide cettePuis-je faire de l'arithmétique sur des pointeurs void * en C?
void *p = &X; /* some thing */
p += 12;
et si oui, qu'est-ce que maintenant p pointer? J'ai un code (tiers) qui fait cela (et compile proprement) et je suppose que le void * a été traité comme un char *. Mon fidèle K & R est silencieux (ish) sur le sujet
EDIT: Ma petite application de test tourne bien sur gcc 4.1.1 et traite void * comme char *. Mais g ++ barfs
Je sais comment le faire correctement. J'ai besoin de savoir si je dois nettoyer cette base de code pour trouver tous les endroits qu'il a fait.
gcc BTW -pedantic jette un avertissement
Résumé:
La spécification C est ambiguë. Il dit cela en termes de représentation et d'utilisation comme paramètres de fonction void * = char *. Mais il est silencieux en ce qui concerne l'arithmétique du pointeur.
- gcc (4) permet et traite comme char *
- g ++ refuse
- -pedantic gcc avertit à ce sujet
- VS2010 à la fois C et C++ refuse
liés? http://stackoverflow.com/questions/1997751/c-gcc-compiler-options-for-pointer-arithmetic-warning – pmg