简体   繁体   中英

c struct queue error: “array type has incomplete element type”

I'm trying to implement a simple priority queue from array of queues. I'm trying to define a struct queue, and than a struct priority queue that has an array of queues as its member variable. However, when I try to compile the code, I get the following error:

pcb.h:30: error: array type has incomplete element type

The code is below:

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

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

Could someone give me a hand? Thanks a lot.

You already typedef the pcb_Q, no need to use struct keyword any more. Just use this:

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

Your struct type has no name. Only the typedef is called pcb_Q .

I don't like this line:

struct pcb_Q queues[5];

Which references structure pcb_Q.

You have not defined pcb_Q as a structure. Instead, you typedef'd pcb_Q as a new type (which happens to be an un-named struct).

Try this instead:

pcb_Q queues[5];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM