1

go-clangライブラリを使用して、次の C ファイルを解析しています: aac.c。ファイルを clang で実行して AST をダンプすると、何らかの理由で、特定の関数の AST 出力が得られません。たとえば、C ファイルには、前方宣言aac_ioctl_send_raw_srb実際の定義が含まれています。

これを考えると、出力に 2 つの AST ノードが表示されることを期待していましたが、1 つだけ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 ファイルを解析しても同じ結果が得られます。定義がダンプされない理由について何か説明はありますか?

4

1 に答える 1

1

私は IRC で助けを得て、誰かがエラーが実際に問題引き起こして#llvmいると示唆しました。他のノードが発行されている場合でも、LLVM は、欠落しているs に存在する情報が必要であると考えるノードを無視している可能性があります。#include

インクルード パスを修正したところ、探していたノードが十分に出力されました。

于 2016-02-15T23:04:49.567 に答える