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