4

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

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

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

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

4

1 回答 1

2

对于RECORD,函数get_declaration()指向类型的声明(a unionenumstructtypedef);获取节点的拼写返回其名称。(显然,要注意区分TYPEDEF_DECL底层声明类型。)

对于FUNCTIONPROTO,您必须使用get_result()和的组合get_arguments()

于 2013-08-21T14:04:11.867 回答