Как найти использование элементов struct с помощью cscope и игнорировать локальные переменные?
Я использую cscope для большого проекта с vim, но без сопоставлений vim (они заморозили vim по какой-то странной причине). Я использую команды cscope изнутри vim, и я хочу, чтобы можно было найти использование элементов структуры в коде.
Предположим, что у меня есть что-то вроде этого:
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 member и локальную основную переменную. Есть ли способ, который я могу найти только вхождения переменной S-члена?
Ответы
Ответ 1
Я не думаю, что есть какой-то способ заставить cscope различать локальную переменную x и переменную-член структуры.
Способ решения этой проблемы в моей компании - использовать уникальную схему именования для переменных-членов, которая помогает их различать:
typedef struct _s{
int s_x;
} S;
Сначала это немного неудобно, но как только вы привыкнете к нему, это облегчает навигацию по коду. Обычно уникальный идентификатор - это всего лишь несколько символов, относящихся к структуре, и это не слишком затрудняет работу.
Ответ 2
Вместо поиска x вы можете поместить курсор на структурную переменную "my_s", а затем нажать комбинацию клавиш "gd". Это позволит вам определить определение my_s, а затем использовать cscope для определения определения S.