我正在编写一个libtooling重构工具.我有一个类,比方说Foo,在一个标题中定义foo.h.我想看看是否foo.h包含在文件中.目前,要检查是否bar.cc包含foo.h,我只是匹配使用recordDecl(hasName("Foo")).这是有效的,因为预处理class Foo { ... };后将存在于bar.ccAST 内部,如果bar.cc包含foo.h.
但是,如果,例如,bar.cc包括cat.h哪些包括,则这不起作用foo.h.我想bar.cc明确包括foo.h.
此外,我希望能够匹配#define宏.
我编写工具的方式使得这两个目标无法实现,因为我匹配的AST已经过预处理.我正在努力做甚么可能吗?我Preprocessor在Clang的Doxygen页面上找到了类参考,但我还没有找到我正在寻找的东西.