锵AST转储不显示的#define
问题描述:
我倾倒一些标题的AST是这样的:锵AST转储不显示的#define
clang -cc1 -ast-dump -fblocks header.h
然而,任何#define
S于标题上没有显示转储。有没有添加它们的方法?
答
确实如此,#定义由预处理器处理,而不是编译器处理。所以你需要一个预处理器解析器阶段。我知道有两种:
Boost Wave可以预处理输入你的,和/或给你钩来触发宏定义或用途。
Clang工具pp-trace使用Clang库,可以对许多预处理器事件(包括宏定义)执行回调。
我没有一个确定的答案,但预处理发生在解析之前,所以这可能是不可能的。 –
预处理器宏不是AST – Pyetras
的一部分谢谢@AnthonyCalandra和Pyetras。你们中的任何人都可以将其作为答案发布,因此我可以接受吗? (除非有人知道我可以使用的解决方法,也许不会预处理输入或其他东西?) –