Заголовочные файлы содержат предварительные объявления - вот что они делают. Проблема, которую они решают, - это когда у вас есть более сложный проект с несколькими файлами исходного кода.
Вы можете иметь библиотеку функций, например, matrix.c
для матричных операций. Без заголовочных файлов вам бы пришлось скопировать предварительные объявления для всех функций matrix.c
во все остальные исходные файлы. Вы также должны будете поддерживать все эти копии в актуальном состоянии с любыми изменениями в matrix.c
.
Если вы когда-нибудь измените функцию в matrix.c
, но забудете изменить ее объявление в другом файле, вы не получите ошибку компиляции. Вероятно, вы не получите ошибку компоновщика. Все, что вы получите, это падение или другое случайное поведение после запуска вашей программы.
Наличие объявлений в одном файле, обычно matrix.h
, которое будет использоваться везде, устраняет все эти проблемы.