header files can be pre-compiled and there are good reasons to do so.
this link: <http://en.wikipedia.org/wiki/Precompiled_header>
discusses pre-compiled header files. The following is from the GCC description
for pre-compiled header files from the above link:
НКУ [править]
Предкомпилированные заголовки поддерживаются в GCC (3.4 и новее). Подход GCC похож на этих VC и совместимых компиляторов. GCC сохраняет предварительно скомпилированные версии файлов заголовков с использованием суффикса .gch. При компиляции исходного файла компилятор проверяет, присутствует ли этот файл в том же каталоге и использует его, если это возможно.
GCC может использовать только предварительно скомпилированную версию, если одни и те же ключи компилятора устанавливаются так же, как при компиляции заголовка и могут использоваться не более одного. Кроме того, перед предварительно скомпилированным заголовком могут быть помещены только инструкции препроцессора (потому что он должен быть прямо или косвенно включен через другой обычный заголовок перед любым компилируемым кодом).
GCC автоматически идентифицирует большинство файлов заголовков по их расширению. Однако, если это не удается (например, из-за нестандартных расширений заголовка), ключ -x можно использовать, чтобы гарантировать, что GCC обрабатывает файл как заголовок.
еще один прекрасный обсуждение предварительно скомпилированных заголовочных файлов находится по адресу: https://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html