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

时间:2011-05-31 17:00:01

标签: c vim 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 f s x',它将返回S的成员变量和本地主变量。有没有办法我只能找到S的成员变量的出现?

2 个答案:

答案 0 :(得分:4)

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

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

typedef struct _s{    
    int s_x;
} S;

一开始有点尴尬,但是一旦你习惯它,它确实更容易导航代码。通常,uniquifier只是与结构相关的几个字符,并且它不会使事情变得非常糟糕。

答案 1 :(得分:0)

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