Случайно назрело – подскажите, пожалуйста, чем отличаются файлы заголовков от файлов кода, когда практически объявлять и описывать функции можно в обоих файлах? Что-то вспомнил Delphi и стало интересно
H (заголовочный файл) для определений функций и классов. C/CPP - для реализаций.
Если заголовочный файл куда-то ещё включён, то при изменении реализации пересобирается только её объектный файл. Если будет изменение в заголовочном файле, то будет необходимо пересобирать все файлы, включающие изменённый.
Если грубо, то в .h включаются объявления, не порождающие реального кода.
В результате .h может быть безболезненно включен в различные модули проекта одновременно.