2

私はこのように書かれたc++コードを見ました、それはMSVCでコンパイルを渡すことができます。

SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};

この表現はどういう意味ですか?私はこれまでこのようなコードを見たことがありません。

誰かが助けることができますか?

4

3 に答える 3

5

これは、集約初期化と呼ばれます。この場合、それは明示的に最初のメンバーのみを初期化しています(残りは値が初期化されています、コメントしてこれを追加させてくれたWhozCraigdevdataのおかげで)、おそらくサイズのバイト数を保持するフィールドを構造のサイズに。


SP_DEVINFO_DATAリファレンスページから、最初のメンバーは次のようなDWORD名前が付けられcbSizeています。

SP_DEVINFO_DATA構造体のサイズ(バイト単位)。

于 2013-03-01T10:24:12.763 に答える
2

これの意味は:

devdataタイプ が、という名前の自動変数を初期化し、SP_DEVINFO_DATAその最初のメンバーをに設定しsizeof(SP_DEVINFO_DATA)ます。

WINAPI構造体では、最初のメンバーで構造体のサイズを公開するのが一般的な方法です。このようにして、そのような構造体を操作するコードは、このメンバーを調べて、操作している構造体のバージョンを判別できます。

于 2013-03-01T10:25:32.393 に答える
1

これは、構造体を初期化する方法です。-structureの最初のメンバーを初期化します。これは、構造体のサイズでSP_DEVINFO_DATAある必要があります。cbSizeこれは、この特定の場合に必要です。

于 2013-03-01T10:25:25.100 に答える