2012-12-09 64 views
5

我有一個遊標指向一個函數調用,其中包含的頭文件中聲明瞭原型。我想獲取這樣的聲明的位置,但正如可以在gdb輸出波紋中看到的那樣,在獲取函數調用的類型之後,獲取指定類型的遊標失敗,如何正確地獲取它?使用libclang,如何在函數調用時獲取遊標的遊標聲明類型?

(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 

這裏的所有相關的源代碼:

回答

3

呸,是我不好,我應該有改爲使用clang_getCursorReferenced ...沒有位置來聲明函數的類型!我必須尋找函數聲明。

Fixed Code