__uuidof(someVar)是做什么的?

Mr.*_*Boy 2 c++ visual-c++ visual-studio-2013

我发现一些代码,这是为了通话__uuidof(IMyInterface),但实际上是调用__uuidof(pIMyInterface)其中pIMyInterface的类型的指针IMyInterface__uuidof调用值而不是类型时的行为如何?

例如int x=123; __uuidof(x),这是否等于__uuidof(int)__uuidof(123)

Han*_*ant 7

__uuid关键字,而不是函数。它不是“调用”的,而是由编译器直接解析的。哪个当然可以很容易地认识到操作数是一个变量。而且它知道变量的类型,因此毫无疑问地查找__declspec(uuid)类型的属性。


Moh*_*awi 3

来自MSDN

__uuidof (
   expression 
)
Run Code Online (Sandbox Code Playgroud)

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

  • 但是“这些类型的变量”的“附加 GUID”是什么?它是否只使用变量的类型,例如 `int x=123; __uuidof(x)` 等价于 `__uuidof(int)`? (4认同)