我使用go-clang库来解析以下C文件:aac.c。出于某种原因,当我通过clang运行文件并转储AST时,我没有为某些功能获得AST输出。例如,C文件稍后包含forward declaration of aac_ioctl_send_raw_srb
和actual 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文件得到相同的结果。是否有任何解释为什么不倾倒定义?
答案 0 :(得分:0)
我在#llvm
IRC得到了一些帮助,有人建议实际的错误导致问题。即使正在发出其他节点,LLVM可能只是忽略它认为需要驻留在缺失的#include
中的信息的节点。
我修复了包含路径,确实发现了我要查找的节点。