В C: Полная ссылка, Герберт Шильдт говорит, что
Заголовки обычно являются файлами, но они не обязательно являются файлами. Допустимо, чтобы компилятор предварительно определял содержимое внутреннего заголовка. Однако для всех практических целей стандартные заголовки c содержатся в файлах, соответствующих их именам.
Как заголовок может существовать без файла? Какая тема этого отрывка? Поскольку расширение .h используется с заголовком.