gpt4 book ai didi

c - 为什么将结构的大小放在结构中?

转载 作者:太空宇宙 更新时间:2023-11-04 05:26:22 24 4
gpt4 key购买 nike

我第一次开始在 Windows 上使用 SetupAPI 并注意到我总是需要在调用填充结构的函数之前将结构的大小放入结构中。例如:

SP_DEVICE_INTERFACE_DATA dintf_data;
dintf_data.cbSize = sizeof(dintf_data);
SetupDiEnumDeviceInterfaces(di, NULL, &GUID_DEVINTERFACE_USB_DEVICE, 0, &dintf_data);

这样做的原因是什么?

这是实现他们想要实现的目标的好方法,还是有更好的方法?

(我能想到的唯一原因是它是一种处理 API 版本控制的方法。)

最佳答案

是的,您明白了,API 版本控制。

操作系统检查传入的大小以确定您正在使用的结构版本。随着为较新版本的 API 添加功能,添加字段(从不删除)以增加大小,因此操作系统可以轻松准确地知道您正在使用哪个版本。

关于c - 为什么将结构的大小放在结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25906251/

24 4 0