我正在编写一个 python 脚本(使用 python clang 绑定(bind))来解析 C header 并提取有关函数的信息:名称、返回类型、参数类型。
我在提取函数名称方面没有问题,但我找不到将 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()
。
关于python - 使用 Clang 绑定(bind)提取类型字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15388961/