铿锵工具。键入名称不带关键字

标签 clang keyword libtooling

我正在开发一些 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/

相关文章:

clang - 从 ObjCPropertyDecl 获取类信息

c++ - clang 重新定义不同 namespace 中的符号错误

r - ld:未知选项:-platform_version 从源构建 R 包时

java - 如何访问Lucene索引中记录的关键字?

css - visibility :隐藏在SEO

python - 什么是 Python 中的异步?

通过标记连接创建包含通用字符名称的标识符

c++ - Clang --coverage 和 -fprofile 选项

c++ - OCLint ASTMatcher 规则。匹配 NS_ENUM

c++ - 对命令行中指定的某些文件运行 ClangTool