编译器错误 C2787

“identifier”:没有与该对象关联的 GUID

__uuidof 运算符采用附加了 GUID 的用户定义类型或此类用户定义类型的对象。 当参数为不具有 GUID 的用户定义类型时,会发生此错误。

以下示例生成 C2787:

// C2787.cpp
#include <windows.h>
struct F {};

struct __declspec(uuid("00000000-0000-0000-c000-000000000046")) F2;

int main() {
   __uuidof(F);   // C2787
   __uuidof(F2);   // OK
}