如何检查Decl是否在#if指令范围内?

时间:2016-09-04 13:00:53

标签: clang llvm-clang libtool libtooling

我正在建立一个clang libtool, 我如何获得预处理器信息,告诉我一个给定的Decl是否在#if #ifdef #ifndef范围内?

1 个答案:

答案 0 :(得分:2)

不幸的是,这并不是一个简单的答案。 Clang并不完全了解任何预处理器指令的AST级别。

据我所知,您可以做的最好的事情是实现一个PPCallbacks类,将其注册到编译器实例预处理器并实现If,Elif,Endif的函数。

然后您可以使用ASTVisitor查找这些源位置之间的所有内容。