c struct queue error:“数组类型具有不完整的元素类型”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c struct queue error:“数组类型具有不完整的元素类型”相关的知识,希望对你有一定的参考价值。

我正在尝试从队列数组中实现一个简单的优先级队列。我正在尝试定义一个struct队列,而不是一个结构优先级队列,它有一个队列数组作为其成员变量。但是,当我尝试编译代码时,我收到以下错误:

pcb.h:30:错误:数组类型具有不完整的元素类型

代码如下:

typedef struct{
    pcb *head;
    pcb *tail;
    SINT32 size;
} pcb_Q;

typedef struct {
 struct pcb_Q queues[5];
 SINT32 size;
} pcb_pQ;

有人可以帮我一把吗?非常感谢。

答案
typedef struct {
 pcb_Q queues[5];
 SINT32 size;
} pcb_pQ;

您的结构类型没有名称。只有typedef被称为pcb_Q

另一答案

你已经输入了pcb_Q,不再需要使用struct关键字了。只要用这个:

typedef struct { 
    pcb_Q queues[5]; 
    SINT32 size; 
} pcb_pQ;
另一答案

我不喜欢这句话:

struct pcb_Q queues[5];

哪个引用结构pcb_Q。

您尚未将pcb_Q定义为结构。相反,您键入了将pcb_Q作为新类型(恰好是一个未命名的结构)。

试试这个:

pcb_Q queues[5];

以上是关于c struct queue error:“数组类型具有不完整的元素类型”的主要内容,如果未能解决你的问题,请参考以下文章

cpp报错:C-struct error-Field has incomplete type

使用 struct 和 map 创建 priority_queue

线性表的链式存储结构

C Struct typdef malloc 赋值

struct.unpack() struct.error: unpack 需要 124 字节的缓冲区

gcc源码编译报错:error: dereferencing pointer to incomplete type ‘struct ucontext’ 解决办法