我正在编写一个python脚本(使用python clang绑定(bind)),该脚本解析C头并提取有关函数的信息:名称,返回类型,参数类型。

我提取函数名称没有问题,但是找不到将clang.cindex.Type转换为C类型字符串的方法。 (例如clang.cindex.TypeKind.UINTunsigned int)

目前,作为一个临时解决方案,我有字典clang.cindex.TypeKind -> C type string和用于处理指针和const限定符的代码,但是我没有找到提取结构名称的方法。

有没有一种通用的方法来获取clang.cindex.Type的C定义?如果没有,如何获取clang.cindex.TypeKind.RECORDclang.cindex.TypeKind.FUNCTIONPROTO类型的C类型字符串?

最佳答案

对于RECORD,函数get_declaration()指向类型的声明(unionenumstructtypedef);获取节点的拼写将返回其名称。 (显然,在区分TYPEDEF_DECL与基础声明类型之间要格外小心。)

对于FUNCTIONPROTO,您必须结合使用get_result()get_arguments()

07-24 09:44
查看更多