2010-03-11 9 views
1
symbol.h:179: note: expected ‘uintptr_t *’ but argument is of type ‘PRECEDENCE’ 

Le code correspondant est:J'ai une compilation gcc avertissement suivant

176 void   symbol_SetCount(SYMBOL, unsigned long); 
177 unsigned long symbol_GetCount(SYMBOL); 
178 
179 size_t    symbol_Ordering(uintptr_t*, SYMBOL); 
180 
181 void   symbol_CheckIndexInRange(int); 
182 void   symbol_CheckNoVariable(SYMBOL); 

symbole est défini comme:

typedef size_t SYMBOL 

Tout effort sera très appréciée.

PRIORITÉ a été modifié comme suit:

typedef int *PRECEDENCE; 


int  symbol_Ordering(PRECEDENCE, SYMBOL); 

voici quelques informations supplémentaires de symbol_Ordering:

if (symbol_Equal(propSymbol, eml_Id())) 
{ /* Arguments should be nil, propositional */ 
symbol_SetOrdering(Precedence, fol_Equality(), symbol_Ordering(Precedence, eml_Id())); 
return eml_RplacWithOpAndArgs(Atom, fol_Equality(), Args)} 

int symbol_ORDERING; 


int symbol_GetIncreasedOrderingCounter(void) 

{ symbol_ORDERING retour ++; }

static __inline__ BOOL symbol_PrecedenceGreater(PRECEDENCE P, SYMBOL S1, SYMBOL S2) 
{ 
return symbol_Ordering((uintptr_t*)P, S1) < symbol_Ordering((uintptr_t*)P, S2); 
} 

size_t    symbol_Ordering(uintptr_t*, SYMBOL); 
+1

Vous devez probablement également afficher le code qui appelle 'symbol_Ordering'. –

+0

Alors qu'est-ce que 'PRECEDENCE' est défini être? – GManNickG

+0

PRECENDANCE a été défini comme suit: typedef int * PRECEDENCE; – thetna

Répondre

1

Il semble que vous avez plusieurs déclarations de symbol_Ordering - qui prend un uintptr_t* et qui prend une int*. uintptr_t* et int* ne sont pas du même type (un est signé, un n'est pas signé), alors ne le faites pas. Faites correspondre les types.

+0

J'ai ajouté quelques informations supplémentaires. Est-ce que cette information est suffisante pour donner une solution explicite? – thetna