2013-04-30 62 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

相關問題