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)