如何使用cscope查找结构成员使用并忽略局部变量?

我正在使用cscope进行带有vim的大型项目,但是没有vim映射(他们因为一些奇怪的原因而冻结了vim)。 我正在使用vim中的cscope命令,我希望能够在整个代码中找到结构成员的用法。

假设我有这样的事情:

1 typedef struct _s{ 2 3 int x; 4 } S; 5 6 int main(){ 7 8 int x = 1; 9 10 S my_s; 11 12 my_s.x = 5; 13 14 return my_s.x; 15 } 

如果我发出命令’cs fsx’,它将返回S的成员变量和本地主变量。 有没有办法我只能找到S的成员变量的出现?

我认为没有办法让cscope区分局部变量x和结构成员变量。

我们在公司解决这个问题的方法是为成员变量使用一个独特的命名方案,以帮助区分它们:

 typedef struct _s{ int s_x; } S; 

起初它有点尴尬,但是一旦你习惯了它,它确实可以更容易地导航代码。 通常,uniquifier只是与结构相关的几个字符,并且它不会使事情变得非常混乱。

您可以将光标放在结构变量“my_s”上,然后按下组合键“gd”,而不是搜索x。 这将使您定位my_s,然后使用cscope查找S的定义。