我目前正在使用 clang C API 为 C++ 代码构建解析器。解析器将处理一个头文件并为其生成一个已定义符号和缺失符号的列表(它忽略包含指令,因此它将严格解析头文件的内容)。我的问题是,如果我有typedef
一个函数指针,它接受一个未定义类型的参数,例如:
typedef SOME_TYPE (* funcPtrName)(SOME_UNDEF_TYPE x);
AST 解析SOME_TYPE
为 typedef 而不是funcPtrName
. 如果我替换SOME_UNDEF_TYPE
为int
,它会正确解析funcPtrName
。
我以为我可以clang_tokenize
用来获取光标的所有标记并手动获取函数指针名称,但是调用clang_getCursorExtent
指向 typedef 的光标无法正常工作(返回的范围是 0,0)。
你知道解决这个问题的任何方法吗?