2016-11-30 2 views
0

Я пытаюсь изучить довольно большую открытую исходную кодовую базу. В файле this переменная m ссылается много раз, не будучи объявленной (см. Строку 819). Поэтому я считаю, что это должна быть глобальная переменная.Поиск файла, в котором объявлена ​​глобальная переменная

Однако этот файл содержит приблизительно два десятка файлов .h. Насколько я понимаю, m мог быть объявлен в любом из этих файлов. Есть ли способ определить, какой файл был объявлен, или мне нужно выполнить поиск через каждый файл .h?

Для этого вам нужен инструмент? У Eclipse есть такая функция?

+1

В этом файле это выглядит так: 'm' является членом класса, представленного 'g'. Трудно сказать, что «g» не копает дальше. Я предполагаю, что это экземпляр класса «игра», потому что «game.h» содержит переменную «m», которая является картой! – JGroven

+0

if 'm' - действительно глобальная переменная, возможно, вы могли бы искать скомпилированные объектные файлы с помощью grepping' nm * .o' и используя шаблон «B m $» –

+0

Yep - 'game.h' определяет глобальный экземпляр' game' называемый 'g', который содержит« карту »с именем' m'. –

ответ

1

Если у вас есть кодовая загружены локально, можно использовать Grep: https://www.gnu.org/software/grep/manual/grep.html

Обратите внимание, что Grep является командой на основе Unix, поэтому в зависимости от оболочки она может быть недоступна. Если вы работаете в Windows, FINDSTR (https://technet.microsoft.com/en-us/library/bb490907.aspx) делает что-то подобное, но не так гибко.

Быстрый пример использования Grep будет что-то вроде этого:

grep -l -R "some_string" /usr/local/SomeDirectory 
+0

фраза «м» встречается тысячи раз в программе этого парня. – JGroven

+0

Я это заметил. Это делает его особенно трудным, поэтому либо ему придется вручную искать исходное определение, либо вычислять какое-то регулярное выражение, которое будет хорошо работать с grep. Честно говоря, проще было бы просто укусить пулю и обыскать эти два десятка файлов заголовков. – Peter

1

Я бы загрузить исходный код и сделать проект от него в моем IDE. Затем я могу найти объявление через контекстное меню.

Если есть более элегантный способ, я бы хотел его услышать!