You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

__uuidof能否用作静态常量C字符串?(微软特定技术问询)

问题解答

不行,你写的代码会直接编译报错,原因如下:

  • __uuidof(MyGuidClass)在MSVC编译环境中返回的是**const GUID&**类型,而LPCWSTR是指向宽字符的指针,两者类型完全不兼容,编译器会抛出类型不匹配的错误。

如果要把类关联的UUID转换成宽字符串存入数组,可以用微软提供的StringFromGUID2 API完成转换,示例代码如下:

#include <guiddef.h>
#include <objbase.h>

class DECLSPEC_UUID("31A0884B-2B2F-4243-B4A0-2AEFE11FDD68") MyGuidClass;

// UUID字符串含连字符共36个字符,加终止符需要37个wchar_t的缓冲区
wchar_t guidBuffer[37] = {0};
static LPCWSTR kstrKeys[] =
{
    StringFromGUID2(__uuidof(MyGuidClass), guidBuffer, _countof(guidBuffer)),
};

StringFromGUID2会把GUID转换成xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx格式的宽字符串,成功时返回指向缓冲区的指针,失败则返回nullptr。如果需要完全静态初始化的字符串,也可以在程序启动阶段提前完成转换并存储到静态变量中。

内容的提问来源于stack exchange,提问作者c00000fd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:08:09