0

我有如下一行:

static STAILQ_HEAD(, my_struct) _myqueue;

我以前从来没有理由使用 QUEUE 宏。是否必须在进行此调用时声明“my_struct”?

我只是问,因为稍后当我稍后在我的代码中尝试使用 my_struct 时,我得到了一个指向不完整类型消息的 derferencing 指针。我实际上是在这里编辑别人的代码,但我在任何地方都找不到 my_struct 定义

4

1 回答 1

1

不, my_struct 不必事先声明。

当你在声明中提到一些未知的结构名称时,没有指定结构的内容,它有一个不完整的类型:它只是告诉编译器会有一些具有该名称的结构,但还不知道其中有什么。

您可以声明指向不完整类型的指针(这发生在 STAILQ_HEAD 宏中),因为编译器不需要知道它的大小或内容。但是在实际声明完整结构之前,您不能实例化不完整类型或取消引用指向不完整类型的指针。

于 2012-07-12T16:50:26.340 回答