tags:

views:

55

answers:

3

Hi,

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.

+1  A: 
typedef struct {
 pcb_Q queues[5];
 SINT32 size;
} pcb_pQ;

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

Matthew Flaschen
wow thanks, that was blazing fast
lhw
+3  A: 

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;
sza
+1  A: 

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