Оператор __uuidof

Блок, относящийся только к системам Майкрософт

Извлекает идентификатор GUID, присоединенный к выражению.

Синтаксис

__uuidof (выражение)

Замечания

Выражение может быть именем типа, указателем, ссылкой или массивом этого типа, шаблоном, специализированным для этих типов или переменной этих типов. Этот аргумент является допустимым, если компилятор может использовать его для поиска прикрепленного GUID.

Особый случай этой встроенной функции заключается в том, что в качестве аргумента предоставляется значение 0 или NULL. В этом случае __uuidof возвращает guid, состоящий из нуля.

Это ключевое слово позволяет извлечь GUID, прикрепленный к следующим объектам:

  • Объект расширенным атрибутом uuid .

  • Блок библиотеки, созданный с помощью атрибута module .

Примечание.

В отладочной сборке __uuidof всегда инициализирует объект динамически (во время выполнения). В сборке выпуска может __uuidof статически (во время компиляции) инициализировать объект.

Для совместимости с предыдущими версиями является синонимом__uuidof, _uuidof если не указан параметр /Za компилятора (отключить расширения языка).

Пример

Следующий код (скомпилированный с библиотекой ole32.lib) будет выводить идентификатор uuid для блока библиотеки, созданного с атрибутом module.

// 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);

Завершение блока, относящегося только к системам Майкрософт

См. также

Выражения с унарными операторами
Ключевые слова