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

相應的代碼是:我有以下的gcc彙編警告

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); 

符號被定義爲:

typedef size_t SYMBOL 

的任何努力將高度讚賞。

PRECEDENCE已被修改爲:

typedef int *PRECEDENCE; 


int  symbol_Ordering(PRECEDENCE, SYMBOL); 

這裏是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 ++; }

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

您可能還需要顯示調用'symbol_Ordering'的代碼。 – 2010-03-11 21:08:14

+0

那麼,PRECEDENCE被定義爲什麼? – GManNickG 2010-03-11 21:23:43

+0

PRECENDENCE已被定義爲: typedef int * PRECEDENCE; – thetna 2010-03-11 21:50:31

回答

1

看起來你有symbol_Ordering多次聲明 - 一個需要uintptr_t*,而另一種的int*uintptr_t*int*不是同一類型(一個是簽名的,一個是未簽名的),所以不要這樣做。使類型匹配。

+0

我已經添加了一些信息。這些信息是否足以提供明確的解決方案? – thetna 2010-03-11 23:33:27