相关疑难解决方法(0)

使用Clang的libtooling匹配#includes(或#defines)的正确方法是什么?

我正在编写一个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页面上找到了类参考,但我还没有找到我正在寻找的东西.

c++ clang libtooling

8
推荐指数
1
解决办法
1779
查看次数

标签 统计

c++ ×1

clang ×1

libtooling ×1