2012-12-09 12 views
5

Mam kursor wskazujący wywołanie funkcji, dla którego prototyp jest zadeklarowany w dołączonym pliku nagłówkowym. Chcę uzyskać lokalizację dla takiej deklaracji, ale jak można zobaczyć na wyjściu gdb poniżej, po uzyskaniu typu dla wywołania funkcji, uzyskanie kursora dla typu deklaracji nie działa, jak zrobić to dobrze?Z libclang, jak uzyskać kursor dla typu deklaracji kursora przy wywołaniu funkcji?

(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 

Tutaj wszystko jest odpowiedni kod źródłowy:

Odpowiedz

3

ba, mój zły, powinienem mieć zamiast tego użyty clang_getCursorReferenced ... nie ma miejsca na deklarację typu funkcji! Muszę szukać deklaracji funkcji.

Fixed Code