Clang AST 转储不显示#defines

Clang AST dump doesn't show #defines

我正在转储某些 header 的 AST,如下所示:

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

但是,header 上的任何 #define 都没有显示在转储中。有没有办法添加它们?

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

  1. Boost Wave 可以为你预处理输入,and/or 给你钩子来触发宏定义或使用。

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