2012-07-12 37 views
0

我有一條線,是這樣的:隊列宏的用法

static STAILQ_HEAD(, my_struct) _myqueue; 

我從未有過的原因之前,使用隊列宏。這個調用是否需要聲明「my_struct」?

我只問,因爲後來當我嘗試在我的代碼中稍後使用my_struct時,我得到一個指向不完整類型消息的指針指針。我實際上在這裏編輯別人的代碼,我找不到my_struct在任何地方定義。

回答

1

不,my_struct不必在之前聲明。

當您在一個聲明中提到了一些未知的結構名,而不指定結構的內容,它有一個不完整的類型:它只是告訴編譯器會有一些結構使用該名稱,但沒有什麼是在裏面。

您可以聲明指向不完整類型的指針(發生在STAILQ_HEAD宏中),因爲編譯器不需要知道它的大小或內容。但是在實際聲明完整結構之前,您不能實例化不完整的類型或取消引用不完整類型的指針。