【发布时间】:2016-09-04 13:00:52
【问题描述】:
我正在构建一个clang libtool, 如何获取预处理器信息,告诉我给定的 Decl 是否在 #if #ifdef #ifndef 的范围内?
【问题讨论】:
标签: clang llvm-clang libtool libtooling
我正在构建一个clang libtool, 如何获取预处理器信息,告诉我给定的 Decl 是否在 #if #ifdef #ifndef 的范围内?
【问题讨论】:
标签: clang llvm-clang libtool libtooling
不幸的是,对此没有简单的答案。 Clang 并不完全了解任何预处理器指令的 AST 级别。
据我所知,您能做的最好的事情就是实现一个 PPCallbacks 类,将其注册到编译器实例预处理器并实现 If、Elif、Endif 的函数。
然后您可以使用 ASTVisitor 查找这些 Source 位置之间的所有内容。
【讨论】: