Чтобы в большом проекте не возникало ошибок по типу Данная функция была определена ранее из-за повторных #include директив (файл включает в себя файл, а тот в себя еще несколько, и так далее), в заголовочные файлы добавляют #include guard директивы. Тык.