当我们包含指向尚未完成定义的结构的指针声明时,c 编译器如何执行?


struct noderecord {
struct noderecord* next;
int data;
}; 

下一步如何在没有错误的情况下声明指针?在声明指针之后,我们又添加了一个元素,指针元素的大小不是不对吗?

根据C 2018 6.2.5 28:,C实现中指向结构的所有指针大小相同

…指向结构类型的所有指针应具有彼此相同的表示和对齐要求…

因此,要知道指向结构的指针有多大,编译器不需要了解该结构的任何信息,只需要知道指针指向某种类型的结构即可。

最新更新