Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
下面的类型转换c代码有什么问题_C_Casting_Syntax Error_Variable Assignment - Fatal编程技术网

下面的类型转换c代码有什么问题

下面的类型转换c代码有什么问题,c,casting,syntax-error,variable-assignment,C,Casting,Syntax Error,Variable Assignment,我有这个密码 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:“键”:未声明的

我有这个密码

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

如果我没有将返回的值类型转换为key*,它会报告类型不匹配错误

编译器似乎不知道“key”和“value”类型。您确定所做的包括正确吗?

struct key*,value*不声明任何内容。它甚至不是有效的C

如果要执行转发声明,语法如下:

struct key;
struct value;
但是,您确定不应该将
替换为某个自定义类型吗?C中的数据结构通常会对类似的字段使用
void*
,这样您就可以在其中放入任何指针,然后将它们转换为您自己的结构。

(key*)在您转换中应该是(struct key*)

您尚未创建类型“key”的

i、 e.你没有做到:

typedef struct
{
   <some defines>
} key;
typedef结构
{
}钥匙;

然后(键*)就行了。

请提供一个完整但很小的示例。遗漏了包括
key
value
类型定义的标题?C!=C++。在C++中,<代码>结构XYZ {…};<代码>自动生成“xyz”的类型定义。在C中,它不是;您仍然必须键入
struct xyz abc={…}
。另外:去除铸型;不需要它们:void指针可以转换为任何指针类型。(演员阵容丑陋)。