我经常遇到一些Win32API结构的定义(但不仅限于此),其具有cbSize
成员,例如以下示例。
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
然后我们就可以像这样使用它:
TEST t = { sizeof(TEST) };
...
或者
TEST t;
t.cbSize = sizeof(TEST);
...
我最初的猜测是这可用于版本控制。一个接收此结构体指针的DLL可以检查cbSize
成员是否与DLL编译时预期值相同,或者检查结构体是否进行了适当的打包。但我想听听你的想法。
cbSize
成员在Win32API的某些C++结构体中的目的是什么?