Export (0) Print
Expand All
2 out of 12 rated this helpful - Rate this topic

__uuidof Operator

Microsoft Specific

Retrieves the GUID attached to the expression.


__uuidof (
      expression 
)

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.

NoteNote

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"

[emitidl];
[module(name="MyLib")];
[export]
struct stuff {
   int i;
};

int main() {
   LPOLESTR lpolestr;
   StringFromCLSID(__uuidof(MyLib), &lpolestr);
   wprintf_s(L"%s", lpolestr);
   CoTaskMemFree(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

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.