3

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

我尝试向所有继承人dyn_cast<>键入 ( ),但结果始终为空。clang::TypeTypeWithKeyword

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

4

1 回答 1

2

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

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

在不改变PrintingPolicy.

于 2017-05-01T20:54:44.947 回答