Подтвердить что ты не робот

Как найти использование элементов 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-члена?

4b9b3361

Ответ 1

Я не думаю, что есть какой-то способ заставить cscope различать локальную переменную x и переменную-член структуры.

Способ решения этой проблемы в моей компании - использовать уникальную схему именования для переменных-членов, которая помогает их различать:

typedef struct _s{    
    int s_x;
} S;

Сначала это немного неудобно, но как только вы привыкнете к нему, это облегчает навигацию по коду. Обычно уникальный идентификатор - это всего лишь несколько символов, относящихся к структуре, и это не слишком затрудняет работу.

Ответ 2

Вместо поиска x вы можете поместить курсор на структурную переменную "my_s", а затем нажать комбинацию клавиш "gd". Это позволит вам определить определение my_s, а затем использовать cscope для определения определения S.