Как быстро определить функции из заголовочных файлов? - PullRequest
0 голосов
/ 07 октября 2011

Я немного новичок в C / C ++, и я трачу непомерное количество времени на поиск файлов заголовков (одно невинное включение может фактически принести с ним десятки файлов заголовков). Даже полезные IDE, такие как Visual Studio, не всегда полезны; иногда, когда я пытаюсь перейти к определению функции, мне предлагается выбрать из нескольких - то, чего я пытался избежать.

Итак ... в очень большом проекте с тысячами заголовочных файлов и множеством вхождений функций с одинаковыми именами и параметрами, какой лучший способ, без сомнения, определить, какая конкретная функция вызывается?

Ответы [ 4 ]

1 голос
/ 07 октября 2011

Попробуйте добавить / showInclude в командную строку компилятора (в настройках проекта, Свойства конфигурации, C / C ++, Командная строка).Это выводит все заголовки, используемые в данной компиляции файла .cpp.Это не быстрый способ, но это верный путь.

Когда Intellisense не работает, я рекомендую Найти в файлах.Таким способом легче отследить определение в заголовке.Я нахожу, что обычно могу сказать, какое объявление является соответствующим.

Имейте в виду, что вы не можете найти источник в заголовке, если вы не имеете дело с шаблонами или встроенными функциями.Таким образом, как правило, нет оснований пытаться различать, какие декларации применяются.Если определение существует в файле SOURCE (.c, .cpp), то для его компиляции может быть только одна функция с таким именем и сигнатурой.Как правило, лучше использовать имя функции в Google, если это опубликованный API от Microsoft или другого источника.

Такие инструменты, как Visual Assist для Visual Studio, также улучшают возможность поиска таких определений.Кроме того, вы можете втиснуть Intellisense в работу лучше.Попробуйте удалить базу данных Intellisense и восстановить ее.Вы можете увидеть, где возникают проблемы, по «ошибкам», отображаемым в окне ошибок.Часто вам нужно улучшить каталоги include, особенно если это проект makefile.Если он затеняет код, который не должен быть серым, какой-то символ препроцессора неверен.Поддержание Intellisense часто того стоит, потому что оно прекрасно, когда оно работает.

Такие инструменты, как Visual Assist для Visual Studio, имеют свой собственный, часто улучшенный, интеллигентный метод поиска определений.

1 голос
/ 07 октября 2011

По общему признанию, я все еще плохо знаком с C ++ (и программированием в целом).Но я думаю, что особенность Visual Studio, которую вы описываете в своем вопросе, - самая большая помощь, которую вы получите.Это немного сузит для вас вещи, но вам все равно придется поработать.

0 голосов
/ 07 октября 2011

Попробуйте использовать Microsoft visual studio 2005. Вы можете легко перейти к определению функции, объявлению функции, а также увидеть график вызова функции и вызывающих абонентов.

0 голосов
/ 07 октября 2011

Спроси у компилятора. Нет, правда! Это единственный способ быть уверенным.

...