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

时间:2013-03-01 10:21:40

标签: c++

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

SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};

这个表达是什么意思?我以前从未见过这样的代码。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:5)

这称为aggregate initialization。在这种情况下,它只显式初始化devdata的第一个成员(其余的值已初始化,感谢WhozCraig进行评论并让我添加此项),可能是一个保存字节数的字段大小,与结构的大小。


SP_DEVINFO_DATA参考页面中,第一个成员是名为DWORD的{​​{1}},其中包含:{/ p>

  

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

答案 1 :(得分:2)

这意味着:

  

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

WINAPI结构的常见做法是在第一个成员中公开结构的大小。这样,在这样的结构上运行的代码可以检查该成员以确定它正在使用的结构的版本。

答案 2 :(得分:1)

这是初始化结构的方式。您初始化SP_DEVINFO_DATA - 结构的第一个成员,该结构应该是结构大小的cbSize。这对于这种特殊情况是必要的。