我正在研究一些clang工具,我需要使用未明确指定的类型生成源代码。
我从clang::QualType
获得的类型的字符串类似于:class std::initializer_list<int>
。问题是获取没有关键字的类型。
我已尝试dyn_cast<>
类型(clang::Type
)到TypeWithKeyword
的所有继承人,但结果始终为空。
当然我可以从类型名称的字符串中删除所有出现的“class”,“struct”等,但我想以“clang方式”解决这个问题。
答案 0 :(得分:1)
答案很简单。
而不是使用QualType::getAsString()
,只需要QualType::getAsString (const PrintingPolicy &Policy)
。
所以代码:
PrintingPolicy pp(f_context->getLangOpts());
string typeName = qualType.getAsString(pp);
在不更改PrintingPolicy
字段的情况下正常运行。