我在C中很生疏,但我認爲我有問題,理解在頭文件中使用typedef
的正確用法,在實現文件中定義實際結構的結構,然後在第三個文件中使用該結構。typedef結構頭和解除引用指針不完整類型
我寫了一個隊列中的數據結構,它具有被定義爲這樣的類型:
typedef struct queue
{
int count;
qnode_t *head;
qnode_t *tail;
} queue_t;
哪裏qnode_t
是唯一隊列的實現文件中使用的結構。
在我的頭我有這樣的:
typedef struct queue queue_t;
另一個文件時我正在試圖獲得隊列的長度這樣內使用這種queue_t
類型:
queue_t *work_queue;
...
int length = work_queue->count;
然而,在該行在哪裏我仰望數我得到編譯器錯誤:
dereferencing pointer to incomplete type
我已經一直在做很多關於如何在C中正確定義類型的研究,但我認爲我只是越來越困惑自己,而不是變得清晰起來,因爲許多示例與其他資源相沖突,或者對於我來說實在太簡單了。
我會得到這個錯誤,因爲結構中的'count'變量沒有在那裏定義?如果是這種情況,那麼我可以在實現和頭文件中定義結構嗎?如果是這樣,頭部只能有定義的計數變量,因爲頭部尾部應該隱藏/隱藏? (我想念OOP)我應該只是做另一個功能,需要queue_t*
並返回其長度爲size_t
?
如果您搜索錯誤消息,你會發現很多以前的問題。這可能是由於一些錯誤造成的,目前還不清楚你製作了哪一個。嘗試閱讀這些問題,我敢打賭你找到一個解決你的錯誤。 – Barmar 2015-02-07 02:22:34
@Barmar我通過其中的一些閱讀,但我有一堆後續/進一步的問題,這就是爲什麼我張貼自己的,因爲不幸的是,我還沒有確切地知道我做錯了什麼。 – JNYRanger 2015-02-07 02:25:28