我经常遇到一些具有 cbSize
成员的 Win32API 结构(但不限于此)的定义,如下例所示。
typedef struct _TEST {
int cbSize;
// other members follow
} TEST, *PTEST;
然后我们像这样使用它:
TEST t = { sizeof(TEST) };
...
或
TEST t;
t.cbSize = sizeof(TEST);
...
我最初的猜测是这可能用于版本控制。像这样接收结构指针的 DLL 可以检查 cbSize
成员是否具有用于编译 DLL 的预期值。或者检查是否为结构完成了正确的包装。但我想听听您的意见。
在 Win32API 的一些 C++ 结构中,cbSize
成员的用途是什么?
最佳答案
它用于版本控制。一个很好的例子是 GetVersionEx称呼。您可以传入 OSVERSIONINFO或 OSVERSIONINFOEX . OSVERSIONINFOEX 是 OSVERSIONINFO 的超集,操作系统知道您传入的唯一方法是通过 dwOSVersionInfoSize 成员。
关于c++ - Win32API 结构中 cbSize 成员的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/189622/