为什么许多 Win32 Strucs 都包含其大小作为成员

Why do many Win32 Strucs contain their size as a member

这不是严格意义上的编程问题,更像是一个设计问题。

使用 WinAPI 中的一些结构时,我注意到它们中的许多都包含一个名为 dwSize 的字段,该字段简单地存储它们的大小,例如 THREADENTRY32 or BLUETOOTH_DEVICE_SEARCH_PARAMS

typedef struct tagTHREADENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ThreadID;
DWORD th32OwnerProcessID;
LONG  tpBasePri;
LONG  tpDeltaPri;
DWORD dwFlags;
} THREADENTRY32;

考虑到这个设计我觉得很有趣为什么使用这些结构的代码不能使用 sizeof?

这背后的实际想法是什么?

这是为了支持该结构的未来版本,可能会添加新字段。