__uuidof Operator
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

__uuidof Operator

Microsoft Specific

Retrieves the GUID attached to the expression.

__uuidof (

The expression can be a type name, pointer, reference, or array of that type, a template specialized on these types, or a variable of these types. The argument is valid as long as the compiler can use it to find the attached GUID.

A special case of this intrinsic is when either 0 or NULL is supplied as the argument. In this case, __uuidof will return a GUID made up of zeros.

Use this keyword to extract the GUID attached to:

  • An object by the uuid extended attribute.

  • A library block created with the module attribute.


In a debug build, __uuidof always initializes an object dynamically (at runtime). In a release build, __uuidof can statically (at compile time) initialize an object.

The following code (compiled with ole32.lib) will display the uuid of a library block created with the module attribute:

// expre_uuidof.cpp
// compile with: ole32.lib
#include "stdio.h"
#include "windows.h"

struct stuff {
   int i;

int main() {
   LPOLESTR lpolestr;
   StringFromCLSID(__uuidof(MyLib), &lpolestr);
   wprintf_s(L"%s", lpolestr);

In cases where the library name is no longer in scope, you can use __LIBID_ instead of __uuidof. For example:

StringFromCLSID(__LIBID_, &lpolestr);

END Microsoft Specific

© 2016 Microsoft