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

C/С++: Как определить цепочку файлов заголовков для данного определения?

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

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

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

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

4b9b3361

Ответ 1

  • Щелкните правой кнопкой мыши проект, "Свойства проекта"
  • "Свойства конфигурации" → "C/С++" → "Дополнительно".
  • Установите "Показать включает" в "Да".

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

Ответ 2

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

Ответ 3

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

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