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.