gpt4 book ai didi

C 编程 - 编译器告诉我我正在取消引用不完整的类型

转载 作者:行者123 更新时间:2023-11-30 15:35:26 25 4
gpt4 key购买 nike

代码的结构是我有一个结构“entry”,它存储在循环列表“bucket”中,该循环列表“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"`

这里是定义哈希表的地方,也就是每个bucket是什么:

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 正在输出此错误:

错误:取消引用指向不完整类型的指针

最佳答案

d.dict 是一个指向某个东西的指针,编译器缺少这个东西的定义。 d 是某个包含 dict 成员的 struct 类型,它是指向某些(可能)其他 struct.编译单元中缺少此另一个struct 的定义。

关于C 编程 - 编译器告诉我我正在取消引用不完整的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22918752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com