Вам нужны только заголовки для предоставления объявлений функций и внешних переменных.
Возможно исключить заголовочные файлы и предоставить ваши объявления в блоке перевода (a.k.a. исходный файл). Хотя это возможно, это не рекомендуется.
Вот пример легальной программы на C без заголовочных файлов:
/* Forward declaration of main(). */
int main(void);
/* Definition for main() function. */
int
main(void)
{
return 13; /* 42 is such an overrated number. */
}
Некоторые причины использования заголовочных файлов: сокращение кода / набора текста и единая точка обслуживания. Если двум модулям требуется одно и то же объявление структуры, размещение его в заголовочном файле уменьшит типизацию (вам нужно только включить #include в оба файла, а не копировать его в оба файла). Кроме того, если вам нужно изменить какое-либо объявление, если оно скопировано, вам придется искать все копии и изменять каждый экземпляр вместо внесения одного изменения в заголовочный файл.
Что касается стандартных заголовочных файлов, таких как math.h
и stdio.h
, если они вам не нужны, не включайте их. ОС не должна требовать stdio.h
, но может использовать math.h
. Большинство стандартных заголовочных файлов не влияют на размер кода; только во время компиляции.
Я настоятельно рекомендую вам сосредоточиться на правильности вашей ОС и не беспокоиться о мелочах, таких как заголовочные файлы. После того, как ваша ОС работает правильно и надежно, продолжайте и обрезайте жир.