C / C ++: Как выяснить цепочку заголовочных файлов для данного определения? - PullRequest
12 голосов
/ 05 июля 2010

В Visual C ++ можно найти файл заголовка, где любое имя (переменная или тип) определено , нажав на нем F12 или выбрав Перейти к определению . Эта функция очень полезна, но она показывает только окончательное местоположение (файл заголовка), где определено имя. Есть ли способ выяснить цепочку заголовочных файлов, которые ведут из моего исходного файла в окончательный заголовочный файл для данного имени?

Например, рассмотрим этот код:

// main.cpp    
#include <stddef.h>
int main()
{
    size_t s;
    return 0;
}

В Visual C ++ 2010, если я найду определение size_t в приведенном выше main.cpp, оно попадет в какой-то файл с именем sourceannotations.h. Я знаю, что эта цепочка заголовков начинается с stddef.h (который я включил) и заканчивается sourceannotations.h. Как выяснить ссылки в середине этой цепочки?

Ответы [ 3 ]

12 голосов
/ 05 июля 2010
  1. Щелкните правой кнопкой мыши проект, «Свойства проекта»
  2. «Свойства конфигурации» -> «C / C ++» -> «Дополнительно».
  3. Установите «Показать включает» в «Да».

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

1 голос
/ 05 июля 2010

В вашем диалоговом окне свойств, в C / C ++, Preprocessor, включите Preprocess to File. Если вы скомпилируете main.cpp, это сгенерирует main.i.

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

1 голос
/ 05 июля 2010

Вы можете использовать инструменты обратного инжиниринга, такие как Doxygen, Understand Analyst и т. Д. Это поможет вам понять весь поток переменных, вызовов функций.

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