__uuidof(someVar)是做什么的?

7
我发现了一些代码,旨在调用__uuidof(IMyInterface),但实际上调用的是__uuidof(pIMyInterface),其中pIMyInterface是类型为IMyInterface的指针。当在值而不是类型上调用__uuidof时,它的行为如何?
例如:int x=123; __uuidof(x) 是否等同于__uuidof(int)__uuidof(123)

RTFM ;) - Ivan Aksamentov - Drop
是的,但我不知道那是什么意思 - 它说它是有效的,但实际返回的是什么。例如,它是变量类型的GUID还是其内容或其他东西? - Mr. Boy
请问您能否描述一下 __uuidof() 会返回什么? - mohammadsdtmnd
2个回答

9

__uuid 是一个关键字,而不是函数。它不是“被调用”的,而是直接由编译器解析。编译器可以轻松识别操作数为变量,并且知道变量的类型,因此可以轻松查找类型的 __declspec(uuid) 属性。


3

来自MSDN

__uuidof (
   expression 
)

表达式可以是类型名称、指针、引用或该类型的数组,以及针对这些类型进行特化的模板,或者是这些类型的变量。只要编译器能够使用它来查找所附加的GUID,该参数就是有效的。

4
“附加GUID”是指“这些类型的变量”的GUID。它是否只使用变量的类型,例如int x=123; __uuidof(x)等同于__uuidof(int) - Mr. Boy
它始终是“那种类型”的GUID,该类型必须是具有附加UUID的结构体或类类型。uuidof(int)是无效的,因为int没有UUID。 - Michael Karcher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接