我正在使用go-clang库来解析以下 C 文件:aac.c。出于某种原因,当我通过 clang 运行文件并转储 AST 时,我没有获得某些功能的 AST 输出。例如,C 文件包含文件的前向声明aac_ioctl_send_raw_srb
和后面的实际定义。
鉴于此,我希望在输出中看到两个 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 文件得到了相同的结果。有没有解释为什么定义没有被丢弃?