检索 C++ 修饰(链接)名的部分或全部未修饰名。
语法
HRESULT get_undecoratedNameEx(
DWORD undecorateOptions,
BSTR* pRetval
);
参数
undecoratedOptions
[in] 指定可控制返回内容的标记的组合。 有关特定值及其功能,请参阅“备注”部分。
pRetVal
[out] 返回 C++ 修饰名的未修饰名。
返回值
如果成功,则返回 S_OK
;否则,返回 S_FALSE
或错误代码。
注意
返回值 S_FALSE
意味着该属性对符号不可用。
备注
undecorateOptions
可以是以下标记的组合。
注意
标记名称不是在 DIA SDK 中定义的,因此你需要将声明添加到代码,或者使用原始值。
标志 | 值 | 说明 |
---|---|---|
UNDNAME_COMPLETE | 0x0000 | 启用完全取消修饰。 |
UNDNAME_NO_LEADING_UNDERSCORES | 0x0001 | 从 Microsoft 扩展关键字中删除前导下划线。 |
UNDNAME_NO_MS_KEYWORDS | 0x0002 | 禁用 Microsoft 扩展关键字的扩展。 |
UNDNAME_NO_FUNCTION_RETURNS | 0x0004 | 禁用主声明的返回类型的扩展。 |
UNDNAME_NO_ALLOCATION_MODEL | 0x0008 | 禁用声明模型的扩展。 |
UNDNAME_NO_ALLOCATION_LANGUAGE | 0x0010 | 禁用声明语言说明符的扩展。 |
UNDNAME_RESERVED1 | 0x0020 | 已保留。 |
UNDNAME_RESERVED2 | 0x0040 | 已保留。 |
UNDNAME_NO_THISTYPE | 0x0060 | 禁用 this 类型上的所有修饰符。 |
UNDNAME_NO_ACCESS_SPECIFIERS | 0x0080 | 禁用成员的访问说明符的扩展。 |
UNDNAME_NO_THROW_SIGNATURES | 0x0100 | 禁用函数和指向函数的指针的“throw-signatures”扩展。 |
UNDNAME_NO_MEMBER_TYPE | 0x0200 | 禁用 static 或 virtual 成员的扩展。 |
UNDNAME_NO_RETURN_UDT_MODEL | 0x0400 | 禁用 UDT 返回的 Microsoft 模型的扩展。 |
UNDNAME_32_BIT_DECODE | 0x0800 | 取消修饰 32 位修饰名。 |
UNDNAME_NAME_ONLY | 0x1000 | 只获取主声明的名称;只返回 [scope::]name。 展开模板参数。 |
UNDNAME_TYPE_ONLY | 0x2000 | 输入只是一种类型编码;编写抽象声明符。 |
UNDNAME_HAVE_PARAMETERS | 0x4000 | 可以使用实际模板参数。 |
UNDNAME_NO_ECSU | 0x8000 | 取消枚举/类/结构/联合。 |
UNDNAME_NO_IDENT_CHAR_CHECK | 0x10000 | 禁止检查有效的标识符字符。 |
UNDNAME_NO_PTR64 | 0x20000 | 输出中不包括 ptr64。 |