2013-04-30 56 views
15

我正在第一次看到Windows API并遇到WNDCLASSX我不禁想知道为什么它的成员012存在cbSize。每个MSDN的描述cbSize是:该结构的大小(以字节为单位)。将此成员设置为sizeof(WNDCLASSEX)。确保在调用GetClassInfoEx函数之前设置此成员。这是描述它,并暗示它的目的,但我不明白必要性。为什么结构可以存储自己的大小?

我的问题是这样的:为什么结构需要存储自己的大小?使用sizeof处理结构的函数是否可以访问这些信息?

+0

我的猜测:说服。还有效率,一次运行sizeof(某些东西)并存储它,然后反复使用,比反复运行sizeof要高效得多。 – 2013-04-30 02:31:33

+1

'do_something_with((struct foo *)i_am_a_bar_ptr);' – 2013-04-30 02:31:55

+0

版本协助和机器平台是两个常见原因。 – WhozCraig 2013-04-30 02:32:00

回答

22

更高版本的Windows API可能会将新字段添加到结构中。如果结构具有大小,则旧代码可以调用API函数,该函数仅复制旧代码所知的字段。

+7

也许WinAPI这次做了正确的事情。 :) – 2013-04-30 02:35:17

相关问题