Clang AST dump没有显示#defines。

4

我正在这样转储一些头文件的AST:

clang -cc1 -ast-dump -fblocks header.h

然而,头文件上的任何 #define 都不会显示在转储中。有没有办法添加它们?

我没有一个明确的答案,但是预处理发生在解析之前,所以这可能不可能。 - Anthony Calandra
预处理器宏不是AST的一部分。 - Pyetras
谢谢@AnthonyCalandra和Pyetras。你们能否把这个作为答案发一下,这样我就可以接受了吗?(除非有人知道我可以使用的解决方法,也许不需要预处理输入或其他什么?) - Edu Garcia
1个回答

3

没错,#defines是由预处理器处理的,而不是编译器。因此,您需要一个预处理器解析器阶段。我知道两个:

  1. Boost Wave可以为您预处理输入,并/或为宏定义或使用触发回调提供钩子。

  2. Clang工具pp-trace使用Clang库,可以在许多预处理器事件(包括宏定义)上进行回调。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接