【问题标题】: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 还是它的内容或其他东西?

标签: c++ visual-c++ visual-studio-2013


【解决方案1】:

__uuid 是一个关键字,而不是一个函数。它不是“调用”的,它是由编译器直接解析的。当然,识别操作数是一个变量是没有问题的。而且它知道变量的类型,因此查找该类型的__declspec(uuid) 属性没有问题。

【讨论】:

    【解决方案2】:

    来自MSDN

    __uuidof (
       expression 
    )
    

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

    【讨论】:

    • 但是“这些类型的变量”的“附加 GUID”是什么?它是否只使用变量的类型,例如int x=123; __uuidof(x) 等价于 __uuidof(int)?
    • 它始终是“那个类型”的 GUID,它必须是带有附加 UUID 的结构或类类型。 uuidof(int) 无效,因为 int 没有 UUID。
    猜你喜欢
    • 2011-05-25
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多