这个表达是什么意思?SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)

What does this expression mean? SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};

本文关键字:DATA DEVINFO SP devdata sizeof 是什么 意思      更新时间:2023-10-16

我看到c++代码是这样写的,它可以通过MSVC编译。

SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};

这个表达是什么意思?我从来没有见过这样的代码。

有人能帮忙吗?

这叫做聚合初始化。在这种情况下,它只显式初始化devdata的第一个成员(其余的都是初始化的值,感谢WhozCraig的注释并让我添加这一点),大概是一个保存字节数的字段,到结构的大小。


SP_DEVINFO_DATA参考页中,第一个成员是名为cbSizeDWORD,即:

SP_DEVINFO_DATA结构的大小,以字节为单位。

这意味着:

初始化一个名为devdata的自动变量,类型为SP_DEVINFO_DATA,并将其第一个成员设置为sizeof(SP_DEVINFO_DATA)

WINAPI结构体通常在其第一个成员中公开结构体的大小。这样,操作这种结构的代码就可以检查该成员,以确定它正在处理的结构的版本。

这就是初始化结构的方法。初始化SP_DEVINFO_DATA结构体的第一个成员,它应该是cbSize和结构体的大小。