代码之家  ›  专栏  ›  技术社区  ›  IInspectable

C++/WrRT提供帮助函数来从字符串文字构造GUID吗?

  •  3
  • IInspectable  · 技术社区  · 6 年前

    与C++/CX不同,C++/WrRT中没有GUIDs的包装类型。它只是用普通的C GUID struct 就这样。因此,构造初始化的guid的唯一方法是使用 aggregate initialization 语法,例如

    GUID const guid{ 0x00000000, 0x0000, 0x0000,{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } };
    

    当它起作用的时候 创建GUID Visual Studio中的工具甚至可以设置为为为您生成初始值设定项代码)它非常单调,不可读,无论是否引入了任何尾数问题,都会让我抓耳挠腮。

    我很想写(用假设 make_guid 功能)

    auto const guid{ make_guid("00000000-0000-0000-0000-000000000000") };
    

    我知道C++/WiRT做了很多 constexpr 从完全限定的类型名计算guid的魔力,因此可以实现零开销编译时间 生成\u guid 功能。浏览 documentation Winrt/基本.h ,我没有发现任何立即适用的东西。

    C++是否提供了一个帮助函数来在编译时从字符串字面上构造GUID?如果没有,我们/我能要一个吗?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Kenny Kerr    6 年前

    不,C++/WRET目前不提供这样的帮助器。当最初编写CONSTEPRPR GUID代码时,C++编译器对CONTROXPR的支持相当脆弱和缓慢。因此,我避免了任何不必要的计算。但是constexpr支持已经有了很大的改进。总之,constexpr make_guid函数可以通过足够高级的编译器实现。下面是一个例子:

    https://gist.github.com/kennykerr/6c948882de395c25b3218ad8d4daf362

    推荐文章