I'm using cscope for a large project with vim, but without the vim mappings (they froze vim for some weird reason). I'm using cscope commands from within vim, and I want to be able to find uses of structure members throughout the code.
Suppose I have something like this:
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 }
If I issue the command 'cs f s x' it will return both S's member variable and the local main variable. Is there a way I can only find the occurrences of S's member variable?
I don't think there is any way to get cscope to differentiate between the local variable x and the structure member variable.
The way we solve this problem at my company is to use a unique naming scheme for the member variables that helps differentiate them:
typedef struct _s{
int s_x;
} S;
It's a little bit awkward at first, but once you get used to it, it does make it easier to navigate the code. Usually the uniquifier is only a few characters relevant to the structure, and it doesn't clutter things up too badly.
Instead of searching for x, you can position your cursor on the structure variable "my_s" and then press the key combination "gd". This will position you on the definition of my_s and then use cscope to find the definition of S.
来源:https://stackoverflow.com/questions/6190955/how-to-find-struct-member-uses-with-cscope-and-ignore-local-variables