__uuidof(someVar) 做啥?

Posted

技术标签:

【中文标题】__uuidof(someVar) 做啥?【英文标题】:What does __uuidof(someVar) do?__uuidof(someVar) 做什么? 【发布时间】:2015-12-14 12:31:20 【问题描述】:

我找到了一些代码,该代码旨在调用 __uuidof(IMyInterface),但实际上调用了 __uuidof(pIMyInterface),其中 pIMyInterfaceIMyInterface 类型的指针。 __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) 做啥?的主要内容,如果未能解决你的问题,请参考以下文章

查找 imapi2 com 对象的 uuid/标头或让 __uuidof 在 mingw 上工作

C++ 打印XPS文档

魔法方法特性和迭代器

20161217py学习笔记:魔法方法/

__file__ 变量是啥意思/做啥?

super().__init__(*args, **kwargs) 做啥?