为什么结构体可以存储自己的大小?

Why might a struct store its own size?

本文关键字:自己的 存储 结构体 为什么      更新时间:2023-10-16

我第一次看到Windows API,在遇到WNDCLASSX时,我不禁想知道为什么它的成员cbSize存在。根据MSDN, cbSize的描述为:该结构的大小,以字节为单位。设置这个成员为sizeof(WNDCLASSEX)。一定要在调用GetClassInfoEx函数之前设置这个成员。这是对它的描述,并暗示了它的目的,但我不明白它的必要性。

我的问题是:为什么一个结构体需要存储自己的大小?难道处理该结构的函数不能使用sizeof访问该信息吗?

Windows API的后续版本可能会向该结构体添加新的字段。如果结构体有大小,那么旧代码可以调用API函数,该函数只复制旧代码所知道的字段。