【发布时间】:2012-01-17 13:24:25
【问题描述】:
我有这个代码
if (hashtable_count(h) > 0)
{
do {
kk = (key*)hashtable_iterator_key(itr);
v =(value*) hashtable_iterator_value(itr);
....
key 和 value 都在与
相同的代码块中声明 struct key *k, *kk;
struct value *v;
VC 2010 报告以下错误
错误 C2065:'key':未声明的标识符
错误 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; }
如果我不将返回的值类型转换为 key*,它会报告类型不匹配错误
【问题讨论】:
-
请提供一个完整但很小的例子。
-
错过了包括
key和value的类型定义的标头? -
C != C++。在 C++ 中,
struct xyz {...};自动为“xyz”生成 typedef。在 C 中它没有;你仍然需要输入struct xyz abc = {...}。另外:移除石膏;它们不是必需的:void 指针可以转换为任何指针类型。 (而且演员阵容很丑)。
标签: c casting syntax-error variable-assignment