Clang 工具。输入不带关键字的名称

Clang tooling. Type name without keyword

我正在开发一些 clang 工具,我需要生成具有未明确指定的类型的源代码。 我从 clang::QualType 获得的类型字符串类似于:class std::initializer_list<int>。问题是在没有关键字的情况下获取类型。

我已经尝试 dyn_cast<> 类型 (clang::Type) 给 TypeWithKeyword 的所有继承人,但结果总是空的。

当然我可以从类型名称的字符串中删除所有出现的"class"、"struct"等,但我想在"clang way"中解决这个问题。

答案很简单。 而不是使用 QualType::getAsString(),只需要 QualType::getAsString (const PrintingPolicy &Policy)。 所以代码:

PrintingPolicy pp(f_context->getLangOpts());
string typeName = qualType.getAsString(pp);

无需更改 PrintingPolicy 的字段即可正常工作。