代码的结构是我有一个struct“entry”,它存储在一个循环列表“bucket”中,它存储在一个哈希表中。 “条目”有两个字段(a和b),当我搜索字段a并返回字段b时,我试图按以下方式进行:
ht_lookup(d.dict->items[bucket],field_a)
我已经搜索了这个,解决方案似乎是包含定义存储桶的头文件,但我已经包含了定义存储桶的头文件,即循环列表,所以我不明白该类型是怎样的不完整的。我可以用代码做什么来渲染类型吗?
我在我的智慧结束时,任何帮助都非常感激。
struct dictionary
{
ht * dict;
} d;
struct entry
{
char word[MAX_WORD_SIZE];
char desc[MAX_DESC_SIZE];
};
这是在
之后`#include "ht.h"`
定义哈希表的位置,即每个桶的位置:
ht * new_ht(int max, hashfun h1, getkeyfun getkey)
{
int i;
ht * t = (ht*)malloc(sizeof(ht));
t->items = (clist**)malloc(max * sizeof(clist*));
t->size = 0;
t->h1 = h1;
t->getkey = getkey;
t->max = max;
for (i=0; i<max; i++)
t->items[i] = new_clist();
return t;
}
gcc正在输出此错误:
错误:取消引用指向不完整类型的指针
答案 0 :(得分:1)
d.dict
是指针的东西,编译器缺少这个东西的定义。 d
类型为struct
,包含dict
成员,指向某些(可能)其他struct
的指针。编译单元中缺少此另一个struct
的定义。