2016-02-14 36 views
0

我正在使用go-clang庫來解析以下C文件:aac.c。由於某些原因,當我通過clang運行文件並轉儲AST時,我不會爲某些函數獲取AST輸出。例如,C文件在文件中稍後包含forward declaration of aac_ioctl_send_raw_srbactual definitionlibclang不發射某些AST節點

鑑於此,我期待看到在輸出的兩個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

我在#llvm IRC中得到了一些幫助,有人提出這個錯誤實際上是引起的問題。儘管其他節點正在發射,但LLVM可能會忽略它認爲需要信息的那些信息,它們位於缺失的#include中。

我修復了包含路徑,並確信我找到的節點已經被釋放。