使用libclang,如何在函数调用时获取游标声明类型的游标?

时间:2012-12-09 17:31:24

标签: llvm clang libclang

我有一个指向函数调用的游标,原型在包含的头文件中声明。我想得到这样的声明的位置,但是在gdb输出中可以看到,在获取函数调用的类型之后,获取声明类型的游标失败了,如何使它正确?

(gdb) n
66      CXType mickey_type = clang_getCursorType(mickey_cursor);
(gdb) n
67      CXCursor mickey_decl_cursor = clang_getTypeDeclaration(mickey_type);
(gdb) n
68      CXSourceLocation mickey_decl_location = clang_getCursorLocation(mickey_decl_cursor);
(gdb) p mickey_type 
$1 = {
  kind = CXType_FunctionProto, 
  data = {0x102826cb0, 0x100a03d90}
}
(gdb) print mickey_decl_cursor 
$2 = {
  kind = CXCursor_NoDeclFound, 
  xdata = 0, 
  data = {0x0, 0x0, 0x0}
}
(gdb) q

以下是所有相关的源代码:

1 个答案:

答案 0 :(得分:3)

呸,我的坏,我应该使用clang_getCursorReferenced而不是...没有声明函数类型的位置!我必须寻找函数声明。

Fixed Code