gpt4 book ai didi

c - 队列 - "dereferecing pointer to incomplete type"

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

因此,我正在尝试编写一些测试。我有一个名为 listQueue.c 的文件(未显示但有效),其中包含一系列关于“队列”的函数操作。现在我的问题在于,当我尝试在名为 testQueue.c 的单独文件中为 listQueue.c 中的一个函数编写一些测试时。

我的 listQueue.c:

// Creates an empty Queue
Queue createQueue (void){
Queue q = malloc (sizeof (*q));
assert(q != NULL);
q->head = NULL;
q->tail = NULL;
q->size = 0;
return q;
}

testQueue.c 包含:

int main (int argc, char *argv[]){

printf("Test 1 - Testing create q\n");
Queue q = createQueue();
printf("%d", q->size);
assert(q->head == NULL);
assert(q->tail == NULL);
printf("All tests passed, createQueue works fine.\n");

return 0;
}

‘头文件’Queue.h”

  typedef struct queueImp *Queue; 
//Function Prototypes
Queue createQueue(void);

现在,当我尝试编译它时,它吐出一个错误。

“取消引用指向不完整类型的指针。”我怀疑这与我调用 createQueue 的方式有关。任何帮助,将不胜感激。谢谢。是的,我在我的 main 之上包含了 Queue.h!

最佳答案

当您在 main() 中引用 q 时,编译器还没有看到 struct queueImp 的定义。因此,它会出错,因为编译器无法确定对象的大小。

struct queueImp 的定义(目前不确定你在哪里 - 我在你发布的代码中没有看到任何地方)在 queue.h并确保包含它。

关于c - 队列 - "dereferecing pointer to incomplete type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20547304/

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