好的,我在Google上看过这个问题一百万次,但对我而言仍然没有成功。 我想创建一个链表。下面是List.c
定义的结构:“error:取消引用指向不完整类型的指针”in c
typedef struct List
{
unsigned int size;
ObjectP head;
} List;
现在,你会发现两者的结构和类型定义命名名单,这是罚款,据我所知。但重要的是该结构不是匿名的。
现在List.h
(这当然包括在List.c
)我定义了另一个类型定义:
typedef struct List* ListP;
其中,据我了解它定义ListP是一个指向一个struct名为List,只是就像我真的命名它一样。
这里的地方我得到的错误:
void freeList(ListP list)
{
ObjectP obj1;
ObjectP obj2;
if (list != NULL)
{
obj1 = list->head;
while (obj1->next != NULL) <---- HERE
{
obj2 = obj1;
obj1 = obj1->next; <---- HERE
freeObject(obj2);
}
free(list);
}
}
我不明白为什么obj1 = list->head;
是好的,但在其他地方我尝试访问结构成员我有这样的错误。 正如我所说我已经试过寻找它,但其他脂肪酶有错误,我无法在我的代码中找到。谢谢!
编辑:List.c
还包括Object.h
所以这不是问题。对象的定义如下:
in Object.h
我有typedef struct Object* ObjectP
; 和Object.c
我有
typedef struct Object
{
void* key;
ObjectP next;
} Object;
还是不知道是什么问题!
下一个是哪里定义的? – duedl0r
小心在代码中包含什么'ObjectP'? –
你如何定义ObjectP?在使用它定义List结构之前,它是否正确定义? –