我正在编写一个python脚本(使用python clang绑定(bind)),该脚本解析C头并提取有关函数的信息:名称,返回类型,参数类型。
我提取函数名称没有问题,但是找不到将clang.cindex.Type
转换为C类型字符串的方法。 (例如clang.cindex.TypeKind.UINT
到unsigned int
)
目前,作为一个临时解决方案,我有字典clang.cindex.TypeKind -> C type string
和用于处理指针和const限定符的代码,但是我没有找到提取结构名称的方法。
有没有一种通用的方法来获取clang.cindex.Type
的C定义?如果没有,如何获取clang.cindex.TypeKind.RECORD
和clang.cindex.TypeKind.FUNCTIONPROTO
类型的C类型字符串?
最佳答案
对于RECORD
,函数get_declaration()
指向类型的声明(union
,enum
,struct
或typedef
);获取节点的拼写将返回其名称。 (显然,在区分TYPEDEF_DECL
与基础声明类型之间要格外小心。)
对于FUNCTIONPROTO
,您必须结合使用get_result()
和get_arguments()
。