Если вы используете gcc / g ++, опция -M
или -MM
выведет строку с информацией, которую вы ищете. (Первый будет включать системные заголовки, а второй - нет. Существуют другие варианты; см. Руководство.)
$ gcc -M -c foo.c
foo.o: foo.c /usr/include/stdint.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/include/bits/wchar.h
Вам нужно будет удалить foo.o: foo.c
в начале, но остальное - это список всех заголовков, от которых зависит файл, поэтому не составит труда написать сценарий для их сбора и суммирования.
Конечно, это предложение полезно только в Unix и только в том случае, если у кого-то нет идеи получше. : -)