libclang没有发出某些AST节点

时间:2016-02-14 02:46:09

标签: clang libclang

我使用go-clang库来解析以下C文件:aac.c。出于某种原因,当我通过clang运行文件并转储AST时,我没有为某些功能获得AST输出。例如,C文件稍后包含forward declaration of aac_ioctl_send_raw_srbactual definition文件。

鉴于此,我希望在输出中看到两个AST节点,但只转储一个FuncDecl(前向声明):

clang -Xclang -ast-dump -fsyntax-only aac.c | grep "aac_ioctl_send_raw_srb" | wc -l
aac.c:38:10: fatal error: 'opt_aac.h' file not found
#include "opt_aac.h"
         ^
1 error generated.
       1 <--- wc output

(忽略错误)

我使用go-clang库从我自己的应用程序中解析C文件得到相同的结果。是否有任何解释为什么不倾倒定义?

1 个答案:

答案 0 :(得分:0)

我在#llvm IRC得到了一些帮助,有人建议实际的错误导致问题。即使正在发出其他节点,LLVM可能只是忽略它认为需要驻留在缺失的#include中的信息的节点。

我修复了包含路径,确实发现了我要查找的节点。