我正在开发一些 clang 工具,我需要使用未明确指定的类型生成源代码。
我从 clang::QualType
得到的类型的字符串类似于:class std::initializer_list<int>
.问题是在没有关键字的情况下获取类型。
我试过 dyn_cast<>
类型 ( clang::Type
) 给 TypeWithKeyword
的所有继承人但结果始终为空。
当然,我可以从类型名称的字符串中删除所有出现的“class”、“struct”等,但我想以“clang方式”解决这个问题。
最佳答案
答案很简单。
而不是使用 QualType::getAsString()
,刚好需要QualType::getAsString (const PrintingPolicy &Policy)
.
所以代码:
PrintingPolicy pp(f_context->getLangOpts());
string typeName = qualType.getAsString(pp);
无需更改
PrintingPolicy
的字段即可正常工作.
关于铿锵工具。键入名称不带关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469688/