__uuidof(someVar) 做啥?
Posted
技术标签:
【中文标题】__uuidof(someVar) 做啥?【英文标题】:What does __uuidof(someVar) do?__uuidof(someVar) 做什么? 【发布时间】:2015-12-14 12:31:20 【问题描述】:我找到了一些代码,该代码旨在调用 __uuidof(IMyInterface)
,但实际上调用了 __uuidof(pIMyInterface)
,其中 pIMyInterface
是 IMyInterface
类型的指针。 __uuidof
在调用值而不是类型时表现如何?
例如int x=123; __uuidof(x)
相当于 __uuidof(int)
或 __uuidof(123)
【问题讨论】:
RTFM ;) 是的,但我不知道那是什么意思——它说它是有效的,但不是实际返回的。是变量类型的 GUID 还是它的内容或其他东西? 【参考方案1】:__uuid
是一个关键字,而不是一个函数。它不是“调用”的,它是由编译器直接解析的。当然,识别操作数是一个变量是没有问题的。而且它知道变量的类型,因此查找该类型的__declspec(uuid)
属性没有问题。
【讨论】:
【参考方案2】:来自MSDN:
__uuidof (
expression
)
表达式可以是类型名称、指针、引用或数组 该类型,专门针对这些类型的模板,或 这些类型。该参数是有效的,只要编译器可以使用它 找到附加的 GUID。
【讨论】:
但是“这些类型的变量”的“附加 GUID”是什么?它是否只使用变量的类型,例如int x=123; __uuidof(x)
等价于 __uuidof(int)
?
它始终是“那个类型”的 GUID,它必须是带有附加 UUID 的结构或类类型。 uuidof(int)
无效,因为 int 没有 UUID。以上是关于__uuidof(someVar) 做啥?的主要内容,如果未能解决你的问题,请参考以下文章