libclang获取原始结构参数类型

这似乎是一个重复的问题(我昨天发现有人问同样的事情,但我现在找不到它),只是这个问题的另一个副本提供了一个替代答案,但没有真正解决问题。

我正在使用一个使用libclang的小工具来总结给定头文件中的结构和函数声明,作为为单元测试构建自动Ruby绑定的工具的一部分。

我目前正在自己​​的源文件上运行我的雏鸟程序以用于测试目的,并且当我遍历这个函数声明时(例如):

enum CXChildVisitResult statementVisitor(CXCursor cursor, CXCursor parent, CXClientData client_data);

返回类型节点(这是一个枚举)基本上包含我期望的,但所有三个参数(都是结构类型)都有CXType“int”。 根据我所能找到的,对于编译器来说,将结构视为整数类型并用适当的偏移量替换成员访问是非常标准的。

这对我来说似乎很奇怪,因为知道实际的结构类型对于一个工具来说是完全必要的,例如,可以确定一个成员访问是否在AST的其他地方以有效的方式被使用。 我尝试使用clang_getCursorExtent获取原始源文件,但是这会给后期预处理文件带来偏移,所以我不能简单地重新打开要读取的文件以获取文本。 更重要的是,如果我要使用libclang来查找参数声明,我想使用libclang来理解它们。 使用静态代码分析库来帮助我识别需要手动解析的C代码字符串感觉有点愚蠢。

是否有一个cmd行标志,我可以传递给叮当声说服它保留结构类型,或以其他方式获取代码中声明的参数类型?

链接地址: http://www.djcxy.com/p/94585.html

上一篇: libclang getting original struct parameter types

下一篇: Find all references of specific function declaration in libclang (Python)