Файл file.d можно понять по make . Вы часто сначала генерируете файлы .d, включаете их в свой Makefile, а затем компилируете c-файлы, только если один из включенных заголовков изменился.
Не беспокойтесь, если вы не используете make.
Документация GCC говорит:
Вместо вывода результата предварительной обработки выведите правило, подходящее для make, описывающее зависимости основного исходного файла. Препроцессор выводит одно правило make, содержащее имя объектного файла для этого исходного файла, двоеточие и имена всех включенных файлов, включая те, которые поступают из параметров командной строки -include или -imacros.