Je ne sais plus bien caster des pointeurs 'universels'

cs_LiBe444 Messages postés 220 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 7 avril 2007 - 25 juin 2005 à 19:40
cs_LiBe444 Messages postés 220 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 7 avril 2007 - 25 juin 2005 à 19:42
Bonjour,

dans l'en tête tads.h, j'utilise une fonction en préprocession de la forme



#define VAL(a)(a.type==EK_ENTIER ? *(int*)a.valeur :
(a.type==EK_SYMBOLE ? *(char**)a.valeur : (a.type==EK_TABLEAU ?
*(int*)a.valeur : (a.type==EK_BOOLEEN ? *(BOOL*)a.valeur :
*(P_LISTE*)a.valeur))))



Ceci n'est pas très valide selon gcc puisque j'obtiens l'avertissement
"pointer/integer type mismatch in conditional expression" à chaque
utlisation de la fonction Val.

Ce problème est du aux expressions conditionnelles (a.type==EK_SYMBOLE ? *(char**)a.valeur et *(P_LISTE*)a.valeur).

Le rendu de Val est dans un void* ....

A noter qu'il y a moitié moins d'avertissement quand je remplace
"(a.type==EK_SYMBOLE ? *(char**)a.valeur" par " (a.type==EK_SYMBOLE ?
*(char*)a.valeur "



Une idée ? Merci d'avance,

Lionel.

1 réponse

cs_LiBe444 Messages postés 220 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 7 avril 2007
25 juin 2005 à 19:42
Au fait *(char*)a.valeur provoque une erreur grave..
0
Rejoignez-nous