class aclass{
public:
int num;
};
int main()
{
aclass *ok;
ok->num = 4;
return 0;
}
現在當我做了clang_getCursorDefinition(cur_cursor);在ok-> num = 4處在o的開頭的光標右邊;它爲遊標提供了int num;裏面aclass。我希望它給我的光標爲aclass *好的;主要內部的聲明。調用clang_getCursorSemanticParent(cur_cursor)似乎是錯誤的,因爲如果我將聲明放在main()func的內部或外部,它仍然返回main()作爲語義父對象。libclang獲取成員聲明
有沒有辦法有效地做到這一點,而不是迭代每一個可能的光標?
編輯: 鏗鏘計數標籤爲1個字符,這是正確的。我正在測試的編輯器自動將選項卡作爲大小4進行計數,因此,我的編輯器將作爲第2列發出的clang預期爲第5列。現在,getCursorDefinition按預期工作,並將我帶入作用域定義。
是的。這一定是它,看着這個。另一個問題。在將行:列設置爲n u m之間的任何位置時,是否有辦法獲取CXCursor_MemberRefExpr類型的光標?原因是如果我設置光標之間的話說我想去範圍內的類的聲明。如果我在n之間設置光標,我想去實際類中的聲明成員。 –
簡而言之,我認爲一個很好的啓發式方法就是選擇具有最小範圍的CXCursor,同時仍然包含您感興趣的位置。這是我在[clang-tags](https:/ /github.com/ffevotte/clang-tags),它似乎工作得不錯。 – Francesco
我相信你的第二個問題已經足夠普遍,它可能會引起其他人的興趣......也許你應該考慮把它作爲一個適當的,完全成熟的問題。 – Francesco