2010-05-24 21 views
0

Я пытаюсь реализовать простую очередь приоритетов из массива очередей. Я пытаюсь определить очередь структур, а не очередь приоритетов структуры, которая имеет массив очередей в качестве своей переменной-члена. Однако, когда я пытаюсь скомпилировать код, я получаю следующее сообщение об ошибке:c struct queue error: «тип массива имеет неполный тип элемента»

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

код ниже:

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

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

Может кто-нибудь дать мне руку? Большое спасибо.

+0

Вы приводите ошибку на линии 30. Но не обеспечивают достаточного контекста, чтобы знать номера строк. Пожалуйста, сделайте нумерацию строк чистой и убедитесь, что вы включили строку 30. – abelenky

ответ

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

Ваш тип структуры не имеет имени. Только typedef называется pcb_Q.

+0

wow thanks, это было быстро – lhw

3

Вы уже набрали pcb_Q, вам больше не нужно использовать ключевое слово struct. Просто используйте это:

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

Я не люблю эту линию:

struct pcb_Q queues[5]; 

, который ссылается на структуру pcb_Q.

Вы не определили pcb_Q как структуру. Вместо этого вы typedef'd pcb_Q как новый тип (который является неименованной структурой).

Попробуйте вместо этого:

pcb_Q queues[5]; 
Смежные вопросы