Оператор __uuidof
Блок, относящийся только к системам Майкрософт
Извлекает идентификатор GUID, присоединенный к выражению.
Синтаксис
__uuidof (
выражение)
Замечания
Выражение может быть именем типа, указателем, ссылкой или массивом этого типа, шаблоном, специализированным для этих типов или переменной этих типов. Этот аргумент является допустимым, если компилятор может использовать его для поиска прикрепленного GUID.
Особый случай этой встроенной функции заключается в том, что в качестве аргумента предоставляется значение 0 или NULL. В этом случае __uuidof
возвращает guid, состоящий из нуля.
Это ключевое слово позволяет извлечь GUID, прикрепленный к следующим объектам:
Примечание.
В отладочной сборке __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);
Завершение блока, относящегося только к системам Майкрософт
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по