4

私は、Cヘッダーを解析し、関数に関する情報(名前、戻り値の型、引数の型)を抽出するPythonスクリプト(python clangバインディングを使用)を作成しています。

関数名の抽出に問題はありませんが、clang.cindex.TypeCタイプの文字列に変換する方法が見つかりません。(例clang.cindex.TypeKind.UINT:)unsigned int

現在、一時的な解決策として、clang.cindex.TypeKind -> C type stringポインターとconst修飾子を処理するための辞書とコードがありますが、構造体名を抽出する方法が見つかりませんでした。

のC定義を取得する一般的な方法はありclang.cindex.Typeますか?clang.cindex.TypeKind.RECORDない場合、Cタイプの文字列とタイプを取得するにはどうすればよいclang.cindex.TypeKind.FUNCTIONPROTOですか?

4

1 に答える 1

2

の場合、RECORD関数はタイプ(a 、、、、、または)のget_declaration()宣言を指します。ノードのスペルを取得すると、その名前が返されます。(明らかに、基本的な宣言の種類と区別することの間で注意してください。)unionenumstructtypedefTYPEDEF_DECL

の場合FUNCTIONPROTO、との組み合わせを使用する必要がget_result()ありget_arguments()ます。

于 2013-08-21T14:04:11.867 に答える