gpt4 book ai didi

c - 另一个 "dereferencing point to incomplete type"问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:14 25 4
gpt4 key购买 nike

我查了一下,没有找到任何可以帮助我的 Material ,所以我不得不问一下。这是代码:

列表.h:

typedef struct List_t *List;

列表.c:

#include "list.h"
#include <stdlib.h>
#include <stdio.h>


typedef struct Item_t
{
struct Item_t* next;
ListElement data;
}*Item;

typedef struct List_t
{
Item head;
Item iterator;
CopyListElement copyFunc;
FreeListElement freeFunc;
};

list_example_test.c:

#include "list.h"
#include <stdlib.h>
#include <stdio.h>
ListElement copyA(ListElement a)
{
return a;
}
void destroyA(ListElement a)
{
}
bool testListCreate();
bool testListCopy()
{
List list1=listCreate(copyA,destroyA);
listInsertFirst(list1,(void*)6);
listInsertFirst(list1,(void*)2);
listInsertFirst(list1,(void*)1);
List list2=listCopy(list1);
listClear(list1);
if(list2->head==NULL) //here is the error!!
{
return false;
}
return true;
}

最后一段代码应该检查 listCopy() 函数是否有效。编译器识别名称 List,当我键入“list2->”时,它甚至建议使用 List 的字段自动完成(在本例中我选择了“list2->head”。是什么导致了问题以及如何解决?谢谢!

最佳答案

将struct List_t 的定义移动到.h 文件。

list_example_test.c 没有struct List_t 的定义,它只知道它是一个struct(来自.h 文件),所以编译器无法计算到List_t 的“head”成员的偏移量.

关于c - 另一个 "dereferencing point to incomplete type"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5788857/

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