Есть ли у нас какой-либо вариант в gcc, чтобы найти, откуда включается конкретный заголовок файла.
У меня есть следующий сценарий:
file_1.h:
объявить тип type_1
file_2.h:
type_1 var;
Я хочу проверить, где был file_1.h включен в библиотеку, которую я создаю.
У gcc есть опция -M:
-M Вместо вывода результата предварительной обработки выведите
Правило, подходящее для make, описывающее зависимости основного источника
файл. Препроцессор выводит один
создайте правило, содержащее имя объектного файла для этого исходного файла, двоеточие и имена всех включенных файлов, включая
исходя из -include или -imacros
параметры командной строки.
Если вы делаете, gcc -M filename.c
, он перечислит все заголовки. То же самое с g ++.
Если вы посмотрите на предварительно обработанный вывод, он покажет заголовки, которые были включены, в том порядке, в котором они были включены, так что вы можете увидеть, где появляется file_1.h, и работать в обратном направлении, чтобы увидеть, какой файл включал его, и какой файл включал этот и т. Д.
-E
опция говорит GCC только выполнить шаг предварительной обработки и остановить перед компиляцией.