首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clang libtooling:如何打印编译器宏定义

Clang libtooling:如何打印编译器宏定义
EN

Stack Overflow用户
提问于 2020-04-11 21:52:41
回答 1查看 170关注 0票数 0

我有一个基于LibTooling的实用程序,我想输出一个用于调试的宏定义列表。可以使用clang/gcc -dM -E -打印编译器宏定义,但如果我将-dM -E-dD传递给ClangTool,它似乎不起作用。是否可以通过任何方式使用LibTooling应用编程接口或命令行界面选项来实现这一点?它是否包含在已解析的源代码中定义的宏并不重要。

我看过其他类似的问题,据我所知,它们都是关于在经过解析的源代码中展开的宏。这不是我想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-07 22:32:35

答案是显而易见的--回想起来。clang::Preprocessor::getPredefines()返回的正是编译器预定义的列表。预处理器对象可以例如从clang::CompilerInstance获得,作为clang::DiagnosticConsumer::BeginSourceFile()中的参数,等等。

出于完整性的考虑,此功能不能通过libclang API使用,但我可以使用所有预定义都出现在翻译单元的开头这一事实来实现。因此,在解析之后,我只列出了不在任何实际位置(使用CursorKind.MACRO_DEFINITION绑定表示法的location.file is None)的所有顶级游标

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61157861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档