我有這樣的代碼有什麼不妥以下類型轉換的C代碼
if (hashtable_count(h) > 0)
{
do {
kk = (key*)hashtable_iterator_key(itr);
v =(value*) hashtable_iterator_value(itr);
....
鍵和值都在同一個代碼塊聲明
struct key *k, *kk;
struct value *v;
和VC 2010報告以下錯誤
錯誤C2065:'鍵':未聲明的標識符
錯誤C2059:語法錯誤: ')'
錯誤C2065:值:未聲明的標識符
錯誤C2059:語法錯誤: ')'
誤差對於兩個分配線。第一個錯誤是第一個錯誤,第二個錯誤是最後一個錯誤。
如果需要,我會很樂意提供更多的細節。
的更多信息: 這裏有兩個功能
void * hashtable_iterator_key(struct hashtable_itr *i)
{ return i->e->k; }
void * hashtable_iterator_value(struct hashtable_itr *i)
{ return i->e->v; }
如果我不類型轉換返回值給鑰匙*,它報告類型不匹配錯誤
請提供一個完整的小例子。 – Lindydancer 2012-01-17 13:26:15
錯過了包含'key'和'value'類型定義的標頭? – 2012-01-17 13:26:37
C!= C++。在C++中,一個'struct xyz {...};'自動生成「xyz」的typedef。在C中它不會;你仍然需要鍵入'struct xyz abc = {...}'。另外:刪除演員;它們不是必需的:void指針可以轉換爲任何指針類型。 (和演員醜陋)。 – wildplasser 2012-01-17 13:51:10