__uuidof 运算符

Microsoft 专用

检索附加到表达式的 GUID。

语法

__uuidof (__uuidof ()

注解

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

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

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

  • uuid 扩展特性的对象。

  • 使用特性创建的库块 module

注意

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

为了与早期版本兼容, _uuidof__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 专用

请参阅

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