查看許多其他類似的問題,他們似乎并沒有解決在結構中呼叫結構的問題。
我有一個簡單的 queue.c 檔案,它有幾個結構,如 struct Node、struct Queue、struct Queue* newQueue(int cap) 等...
以下是檔案job_queue.c中這個問題的兩個相關結構:
...
struct Queue {
int size;
int max_size;
struct Node *head;
struct Node *tail;
};
struct Queue* newQueue(int capacity)
{
struct Queue *q;
q = malloc(sizeof(struct Queue));
if (q == NULL) {
return q;
}
q->size = 0;
q->max_size = capacity;
q->head = NULL;
q->tail = NULL;
return q;
}
...
這是我匯入主檔案的 queue.h 頭檔案。
#ifndef __SIMPLE_QUEUE__
#define __SIMPLE_QUEUE__
struct Queue;
extern struct Queue*
newQueue(int capacity);
extern int
enqueue(struct Queue *q, char* value);
extern void*
dequeue(struct Queue *q);
extern void
freeQueue(struct Queue *q);
#endif
我按照其他帖子的指導清楚地定義了結構的名稱。在我的主 C 檔案中,我從以下內容初始化佇列
struct Queue* job_queue = newQueue(queue_cap);
我將它傳遞給另一個函式,引數如下:
void queueing(struct Queue* jobs_queue){
...
}
在此函式中,我嘗試通過執行以下操作來列印 max_value:
printf("Queue size: %d", jobs_queue->max_size);
但是,我收到錯誤:dereferencing pointer to incomplete type 'struct Queue'
我必須解決什么才能擺脫此錯誤?
uj5u.com熱心網友回復:
您的 queue.h 檔案僅宣告 struct Queue. 它沒有定義它,所以除了 queue.c 之外的檔案看不到定義。
您需要將結構的完整定義放在 queue.h 中,以便在其他檔案中看到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/524311.html
標籤:C指针结构队列取消引用
下一篇:帶有html和php的錯誤訊息
