Erreur à la compilation : "Size unknown"

Résolu
morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007 - 24 janv. 2006 à 21:53
morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007 - 25 janv. 2006 à 08:38
Les types decode ci dessous provoque tous la même erreur : 'void *' unknown size

Je comprends pas pourquoi et encore moins comment y remédier...
Qqun pourrait m'aider svp ? Merci d'avance

_1er expl :

LPVOID lpPtr = 3;

lpPtr += 2; ----> erreur

_2nd expl :

LPVOID lpPtr1 = 3;
LPVOID lpPtr2 = 2;

lpPtr1 = lpPtr2; ------> pas d'erreur
lpPtr1 += lpPtr2; -----> erreur
lpPtr1 = lpPtr2 + 3 --------> erreur

3 réponses

Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
24 janv. 2006 à 23:52
Effectivement:

char *pc;
pc++; registre d'adresse avance de 1 octet = sizeof(char)

float *pf;
pf++; registre d'adresse avance de 4 octet = sizeof(float)

D3DXVECTOR3 *pv3;
pv3++; registre d'adresse avance de 12 octet = 3*sizeof(float)

Donc le pointeur doit être typé pour pouvoir être incrémenté.


void *pv;
pv++; erreur
((BYTE*)pv)++; doit marché car pv est casté en BYTE* qui est par définition typé
3
spiky31 Messages postés 106 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 11 février 2008
24 janv. 2006 à 22:45
C'est de l'arythmetique de pointeurs.

Il faut bien comprendre que lpPtr contient la valeur d'une adresse memoire.
Le compilateur doit connaitre la taille en octets de l'entité dont l'adresse est manipulée par ton pointeur.
Exemple :

int a[3];
int *lpPtr = &a; // & pour "adresse de ..."
// evite de mettre des valeurs arbitraires dans les pointeurs sinon tu risque d'avoir de drole de surprises !!
lpPtr +2; // ici *lpPtr a[2];

Si ton pointeur est generique (void *) tu ne peut pas effectuer d'operations dessus.

voila a+
0
morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007
25 janv. 2006 à 08:38
merci à ts les deux
0
Rejoignez-nous