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
的字段即可正常工作。
我正在开发一些 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
的字段即可正常工作。