私はこのように書かれたc++コードを見ました、それはMSVCでコンパイルを渡すことができます。
SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};
この表現はどういう意味ですか?私はこれまでこのようなコードを見たことがありません。
誰かが助けることができますか?
私はこのように書かれたc++コードを見ました、それはMSVCでコンパイルを渡すことができます。
SP_DEVINFO_DATA devdata = {sizeof(SP_DEVINFO_DATA)};
この表現はどういう意味ですか?私はこれまでこのようなコードを見たことがありません。
誰かが助けることができますか?
これは、集約初期化と呼ばれます。この場合、それは明示的に最初のメンバーのみを初期化しています(残りは値が初期化されています、コメントしてこれを追加させてくれたWhozCraigdevdataのおかげで)、おそらくサイズのバイト数を保持するフィールドを構造のサイズに。
SP_DEVINFO_DATAリファレンスページから、最初のメンバーは次のようなDWORD名前が付けられcbSizeています。
SP_DEVINFO_DATA構造体のサイズ(バイト単位)。
これの意味は:
devdataタイプ が、という名前の自動変数を初期化し、SP_DEVINFO_DATAその最初のメンバーをに設定しsizeof(SP_DEVINFO_DATA)ます。
WINAPI構造体では、最初のメンバーで構造体のサイズを公開するのが一般的な方法です。このようにして、そのような構造体を操作するコードは、このメンバーを調べて、操作している構造体のバージョンを判別できます。
これは、構造体を初期化する方法です。-structureの最初のメンバーを初期化します。これは、構造体のサイズでSP_DEVINFO_DATAある必要があります。cbSizeこれは、この特定の場合に必要です。