【发布时间】:2013-04-30 02:30:07
【问题描述】:
我第一次看到 Windows API 时遇到了WNDCLASSX,我不禁想知道为什么它的成员 cbSize 存在。根据 MSDN,cbSize 的描述是:此结构的大小(以字节为单位)。将此成员设置为 sizeof(WNDCLASSEX)。请务必在调用 GetClassInfoEx 函数之前设置此成员。 这描述了它,并暗示了它的用途,但我不理解必要性。
我的问题是:为什么结构需要存储自己的大小?处理该结构的任何函数都不能使用sizeof 访问该信息吗?
【问题讨论】:
-
我的猜测:说服。还有效率,运行一次 sizeof(something) 并存储它,然后一遍又一遍地使用它比一遍又一遍地运行 sizeof 效率更高。
-
do_something_with((struct foo*)i_am_a_bar_ptr); -
版本辅助和机器平台是两个常见的原因。
-
@TheFloatingBrain 不会在编译时解析 sizeof( )(因此需要零处理时间)?
-
“没有任何处理结构的函数可以使用 sizeof 访问该信息吗?” - 如果它只是由指向某个 基类的指针给出,则不会" 结构体。