C语言 在自引用结构上使用 sizeof()



我有一个全局双向链表结构,定义如下:

struct list {
     struct list *next;
     struct list *prev;
};

如果我尝试使用 sizeof(struct list) 初始化结构列表(在同一文件中(,我会得到invalid application of 'sizeof' to an incomplete type 'struct list' .为什么在这种情况下struct list会被视为不完整的类型?该结构只有 2 个指针,其大小可以在编译时计算。

由于您没有向我们展示最小、完整和可验证的示例,我只能猜测,但我猜您不包括定义结构的头文件,只有一个前向声明。

前向声明仅告知编译器该结构存在,但不说明其成员或结构的大小。为此,您需要完整的定义。

最新更新