私はこのように書かれた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
これは、この特定の場合に必要です。