C++ での GUID の宣言が C# と異なるかどうかを尋ねたいです。私はC#でこれに遭遇しました:
GUID InterfaceClassGuid = {0x4d1e55b2, 0xf16f, 0x11cf, 0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30};
これは C++ で実行可能ですか? そうでない場合、どのように変換できますか?ありがとう。
GUID
inの定義は、<windows.h>
この構文と互換性があります。Cでも動作します。
おそらく最も簡単な (そして便利な) のは、MS 固有のものを活用すること__declspec(uuid(...))
です。
class __declspec(uuid("{C1F400A4-3F08-11D3-9F0B-006008039E37}")) NullRenderer;
GUID x = __uuidof(NullRenderer);
この方法では、ソース コードで GUID コンポーネントを分割する必要さえありませんが、それを真の GUID 宣言として持つことができます。
標準 C++ で定義されている GUID 型はありません。struct GUID
ただし、同じ方法で初期化できる を定義することもできます (一部のコンパイラ ベンダーが定義している可能性もあります)。
edit : Microsoft は GUIDを次のように定義しています。
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
この定義により、コードはそのまま機能するはずです。
GUID 構造は C# とは異なります。定義されています
typedef struct _GUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data[8];
} GUID;
変数として扱いたい場合は、次のようにします。
GUID guid = {0x4d1e55b2, 0xf16f, 0x11cf, {0x88, 0xcb, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30}};
試してみて、ここも見てください:SO