libclang 获取成员声明
libclang getting the member declaration
class aclass{
public:
int num;
};
int main()
{
aclass *ok;
ok->num = 4;
return 0;
}
现在当我做clang_getCursorDefinition(cur_cursor); 在 ok->num = 4 处 o 开头的光标上;它给出了整数的光标;在Aclass内部。我希望它给我一个类的光标 *ok;主内声明。调用 clang_getCursorSemanticParent(cur_cursor) 似乎是错误的,就好像我将声明放在 main() func 内部或外部一样,它仍然返回 main() 作为语义父级。
有没有办法有效地做到这一点,而无需迭代每一个可能的游标?
编辑: Clang 将制表符计为 1 个字符,这是正确的。我正在测试的编辑器自动将选项卡计为大小 4,因此 clang 期望的第 2 列,我的编辑器将发送为第 5 列。 现在,getCursorDefinition 按预期工作,并将我带到作用域定义。
当我在
o
开头的光标上做clang_getCursorDefinition(cur_cursor)时ok->num = 4;
也许您对代码行为感到惊讶,因为(常见的)误解认为每个源位置只有一个光标。
实际上在这个位置有很多光标,其中一个指向整个表达式,另一个指向成员引用ok->num
,另一个指向指针ok
。(例如,有关此问题的更详细说明,请参阅此问题:C++ libclang:从 CXSourceLocation 检索游标返回错误的游标?
您可能应该尝试找到正确的光标,其中所有光标都位于同一位置。执行此操作的方法取决于您最初获取光标的方式。
相关文章:
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 如何使用模板声明成员函数?(不是模板类)
- 如何使用 Boost.Hana 声明成员变量
- 声明成员对象而不调用其默认构造函数
- 使用函数类型语法声明成员函数
- 尝试访问标头声明成员时出现隔离错误
- 根据二手构造函数声明成员
- C 模板明确声明成员函数值/避免了宏的问题
- 如何在基本模板类中声明成员,其中类型取决于派生类的类型
- 错误:类中没有声明成员函数
- 我可以使用相同的名称为周围作用域中的类型声明成员类型别名吗
- 从variadic模板参数声明成员变量
- 在类(C )中使用模板时未声明成员函数
- 错误:类中未声明 '' 成员函数
- 如何在指向常量地址时声明成员函数常量指针
- 何时以及为什么在堆C++上声明成员变量
- C++ 错误:未在范围内声明;成员函数
- 在不声明成员变量的情况下更改按钮颜色
- 错误 C2535:已定义或声明成员函数
- 当声明成员函数时,*New()是什么意思