__uuidof 运算符

Microsoft 专用

检索附加到表达式的 GUID。

语法

__uuidof (expression)

注解

expression 可以是类型名称、指针、引用或该类型的数组、专用于这些类型的模板或这些类型的变量。 只要编译器可使用参数查找附加的 GUID,此参数就有效。

将 0 或 NULL 作为自变量提供时是此内部函数的特例。 在此情况下,__uuidof 将返回由零组成的 GUID。

使用此关键字可将附加的 GUID 提取到:

  • uuid 扩展特性提供的对象。

  • 使用 module 特性创建的库块。

注意

在调试版本中,__uuidof 始终动态初始化对象(在运行时)。 在发布版本中,__uuidof 可静态初始化对象(在编译时)。

为了与以前的版本兼容,除非指定了编译器选项 /Za(禁用语言扩展),否则 _uuidof__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);
}

注释

如果库名不再在范围内,可使用 __LIBID_ 代替 __uuidof。 例如:

StringFromCLSID(__LIBID_, &lpolestr);

结束 Microsoft 专用

另请参阅

使用一元运算符的表达式
关键字