我看到c++代码是这样写的,可以通过MSVC编译。
SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};
这个表达是什么意思?我以前从未见过这样的代码。
有人可以帮忙吗?
我看到c++代码是这样写的,可以通过MSVC编译。
SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};
这个表达是什么意思?我以前从未见过这样的代码。
有人可以帮忙吗?
这称为聚合初始化。在这种情况下,它显式初始化了devdata
only 的第一个成员(其余的都是值初始化,感谢WhozCraig的评论并让我添加这个),大概是一个保存字节数大小的字段,到结构的大小.
在SP_DEVINFO_DATA
参考页面中,第一个成员是一个DWORD
名为cbSize
:
SP_DEVINFO_DATA 结构的大小(以字节为单位)。
这表示:
初始化一个名为
devdata
, 类型 的自动变量SP_DEVINFO_DATA
,并将其第一个成员设置为sizeof(SP_DEVINFO_DATA)
。
WINAPI 结构的常见做法是在其第一个成员中公开结构的大小。这样,在这种结构上运行的代码可以检查该成员以确定它正在使用的结构的版本。
这就是初始化结构的方式。您初始化 - 结构的第一个成员SP_DEVINFO_DATA
,它应该cbSize
与结构的大小。对于这种特殊情况,这是必要的。