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按预期的方式工作,并带我进入范围定义。
发布于 2014-12-29 15:02:58
当我做clang_getCursorDefinition(Cur_cursor)时;在上,游标就在
oatok->num = 4;的开头
也许您对您的代码行为感到惊讶,因为(常见的)误解是每个源位置只有一个游标。
实际上,这个位置有许多游标,其中一个指向整个表达式,另一个指向成员引用ok->num,另一个指向指针ok。(有关这个问题的更详细解释,请参见这个问题:C++ libclang: Retrieving cursor from CXSourceLocation returning wrong cursor?)
您可能应该尝试找到正确的光标,其中所有的位置在同一地点。做这件事的方法取决于你最初是如何得到光标的。
https://stackoverflow.com/questions/27683981
复制相似问题