__uuidof 演算子

Microsoft 固有の仕様

式にアタッチされている GUID を取得します。

構文

__uuidof (式 (expression))

解説

expression は、その型の型名、ポインター、参照、または配列、それらの型に特化したテンプレート、またはそれらの型の変数にすることができます。 引数は、アタッチされた GUID を見つけるためにコンパイラが使用できる限り有効です。

この組み込みの特殊なケースは、引数として 0 または NULL が指定される場合です。 この場合、__uuidof はゼロで構成された GUID を返します。

このキーワードを使用すると、次のものにアタッチされている GUID を抽出できます。

  • uuid 拡張属性によるオブジェクト。

  • module 属性で作成されたライブラリ ブロック。

Note

デバッグ ビルドでは、__uuidof は常にオブジェクトを動的に (実行時に) 初期化します。 リリース ビルドでは、__uuidof は静的に (コンパイル時に) オブジェクトを初期化できます。

以前のバージョンとの互換性を確保するために、_uuidof は、コンパイラ オプション /Za (言語拡張機能の無効化) が指定されていない限り、__uuidof の同意語です。

次のコード (ole32.lib でコンパイル) は、module 属性で作成されたライブラリ ブロックの uuid を表示します。

// expre_uuidof.cpp
// compile with: ole32.lib
#include "stdio.h"
#include "windows.h"

[emitidl];
[module(name="MyLib")];
[export]
struct stuff {
   int i;
};

int main() {
   LPOLESTR lpolestr;
   StringFromCLSID(__uuidof(MyLib), &lpolestr);
   wprintf_s(L"%s", lpolestr);
   CoTaskMemFree(lpolestr);
}

説明

ライブラリ名がスコープ内でなくなった場合は、__uuidof の代わりに __LIBID_ を使用できます。 次に例を示します。

StringFromCLSID(__LIBID_, &lpolestr);

Microsoft 固有の仕様はここまで

関連項目

単項演算子を含む式
キーワード