Отображение иерархии #include для файла C ++ в Visual Studio - PullRequest
155 голосов
/ 16 июля 2009

Проблема: У меня есть большой проект Visual C ++, который я пытаюсь перенести в Visual Studio 2010. Это огромный набор материалов из разных источников и разных возрастов. У меня проблемы, потому что что-то включает в себя winsock.h и winsock2.h.

Вопрос: Какие существуют инструменты и методы для отображения иерархии #include для исходного файла Visual Studio C ++?

Я знаю о cl /P для получения выходных данных препроцессора, но это не ясно показывает, какой файл включает какие другие файлы (и в этом случае вывод /P составляет 376 932 строки 8 -)

В идеальном мире мне бы хотелось, чтобы иерархически отображались, какие файлы содержат какие другие файлы, а также номера строк, чтобы я мог перейти к источникам:

source.cpp(1)
  windows.h(100)
    winsock.h
  some_other_thing.h(1234)
    winsock2.h

Ответы [ 8 ]

214 голосов
/ 16 июля 2009

Есть настройка:

Настройки проекта -> Свойства конфигурации -> C / C ++ -> Дополнительно -> Показать включает

, который будет генерировать дерево. Он сопоставляется с переключателем компилятора / showIncludes

19 голосов
/ 16 июля 2009

Компилятор также поддерживает ключ / showInclude - он не дает вам номера строк, но может дать довольно полное представление о том, какие из них получены откуда.

Он находится в разделе «Настройки проекта» -> «Свойства конфигурации» -> «C / C ++» -> «Дополнительно» -> «Показать включает».

17 голосов
/ 16 июля 2009

Мы нашли IncludeManager очень мощным инструментом. Это не бесплатно (но не дорого), и это позволило нам получить представление о проблемах с включением и сократить время компиляции с 50 до 8 минут, исключив большие фрагменты включений, которые мы не использовали.

5 голосов
/ 19 мая 2014

Не так хорошо, как иерархическая функция включения в gcc, которая показывает прямую иерархию включения в случае ошибки. Опция «show include» в VS показывает все, что является избыточным при отладке проблем с иерархическими включаемыми файлами.

4 голосов
/ 16 июля 2009

Здесь - хороший сторонний инструмент FOSS. Вы можете экспортировать результаты в XML, который будет включать данные о количестве вхождений и номерах строк.

3 голосов
/ 15 июня 2018

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

3 голосов
/ 08 апреля 2010
2 голосов
/ 16 июля 2009

cl / P должен показывать номера строк, чтобы вы могли определить контекст, из которого включается заголовочный файл.

Если вы выделите строки с помощью ...

grep "^ # line" file.i

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

Если это случайный случай, это должна быть довольно быстрая диагностика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...