lhw
lhw

Reputation: 33

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.

Upvotes: 0

Views: 314

Answers (3)

abelenky
abelenky

Reputation: 64682

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];

Upvotes: 1

zs2020
zs2020

Reputation: 54514

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;

Upvotes: 3

Matthew Flaschen
Matthew Flaschen

Reputation: 284786

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

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

Upvotes: 1

Related Questions