首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libclang获取成员声明

libclang获取成员声明
EN

Stack Overflow用户
提问于 2014-12-29 05:45:13
回答 1查看 484关注 0票数 3
代码语言:javascript
复制
class aclass{
public:
    int num;
};

int main()
{
    aclass *ok;
    ok->num = 4;
    return 0;
}

现在,当我执行clang_getCursorDefinition(cur_cursor);在o的开头的光标上的ok->num = 4;它给出了int num;I aclass的游标。我希望它给我的光标为aclass *ok;声明在main中。调用clang_getCursorSemanticParent(cur_cursor)似乎是错误的,就好像我将声明放在main() func内部或外部一样,它仍然返回main()作为语义父级。

有没有一种方法可以有效地做到这一点,而不迭代每一个可能的游标?

编辑: Clang将制表符计数为1字符,这是正确的。我正在测试的编辑器自动将选项卡计数为4大小,所以clang期望的是第2列,我的编辑器发送的是第5列。现在,getCursorDefinition按预期的方式工作,并带我进入范围定义。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-29 15:02:58

当我做clang_getCursorDefinition(Cur_cursor)时;在上,游标就在o at ok->num = 4;的开头

也许您对您的代码行为感到惊讶,因为(常见的)误解是每个源位置只有一个游标。

实际上,这个位置有许多游标,其中一个指向整个表达式,另一个指向成员引用ok->num,另一个指向指针ok。(有关这个问题的更详细解释,请参见这个问题:C++ libclang: Retrieving cursor from CXSourceLocation returning wrong cursor?)

您可能应该尝试找到正确的光标,其中所有的位置在同一地点。做这件事的方法取决于你最初是如何得到光标的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27683981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档