我正在编写一个python脚本(使用python clang绑定),它解析C头并提取有关函数的信息:name,return types,argument types。
我提取函数名称没有问题,但我找不到将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类型字符串?
答案 0 :(得分:1)
对于RECORD
,函数get_declaration()
指向类型声明(union
,enum
,struct
或typedef
);获取节点的拼写返回其名称。 (显然,要区分TYPEDEF_DECL
与基础声明类型。)
对于FUNCTIONPROTO
,您必须使用get_result()
和get_arguments()
的组合。