0
我有一條線,是這樣的:隊列宏的用法
static STAILQ_HEAD(, my_struct) _myqueue;
我從未有過的原因之前,使用隊列宏。這個調用是否需要聲明「my_struct」?
我只問,因爲後來當我嘗試在我的代碼中稍後使用my_struct時,我得到一個指向不完整類型消息的指針指針。我實際上在這裏編輯別人的代碼,我找不到my_struct在任何地方定義。
我有一條線,是這樣的:隊列宏的用法
static STAILQ_HEAD(, my_struct) _myqueue;
我從未有過的原因之前,使用隊列宏。這個調用是否需要聲明「my_struct」?
我只問,因爲後來當我嘗試在我的代碼中稍後使用my_struct時,我得到一個指向不完整類型消息的指針指針。我實際上在這裏編輯別人的代碼,我找不到my_struct在任何地方定義。
不,my_struct不必在之前聲明。
當您在一個聲明中提到了一些未知的結構名,而不指定結構的內容,它有一個不完整的類型:它只是告訴編譯器會有一些結構使用該名稱,但沒有什麼是在裏面。
您可以聲明指向不完整類型的指針(發生在STAILQ_HEAD宏中),因爲編譯器不需要知道它的大小或內容。但是在實際聲明完整結構之前,您不能實例化不完整的類型或取消引用不完整類型的指針。