Оператор __uuidof

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

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

__uuidof ( 
   expression  
)

Заметки

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

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

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

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

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

Примечание

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

Пример

Следующий код (скомпилированный с библиотекой 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);

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

См. также

Ссылки

Выражения с унарными операторами

Ключевые слова в C++