Начните с системных заголовков.
Если между заголовками нет никакой зависимости, оба способа работают, но поскольку программирование - это, по сути, связь не с компьютером, а с другими людьми, важно сделать его логичными легко понять.И я считаю, что лучше начать с системных заголовков.
Я основываю этот один из моих самых первых курсов программирования (я думаю, в 1984 году), где мы программировали на Лиспе, и нас учили думать какэто: вы начинаете с обычного языка Lisp, а затем создаете новый язык, более полезный для вашего приложения, добавляя некоторые функции и типы данных.Если вы, например, добавили даты и возможность манипулировать датами, этот новый язык можно назвать Lisp-with-date.Затем вы можете использовать Lisp-with-date для создания нового языка с функциональностью календаря, который можно назвать Lisp-with-calendars.Как слои в луке.
Аналогично, вы можете рассматривать C как имеющий «основной» язык без заголовков, а затем, например, вы можете расширить этот язык на новый, более широкий язык с функциональными возможностями ввода / вывода.по #include stdio.h.Вы добавляете все больше и больше материала в основной язык, включая больше заголовков.(Я знаю, что термин «язык C» в других контекстах относится ко всему стандарту со всеми стандартными заголовками, но имейте в виду, что здесь.) Каждый новый заголовок #included создает новый, более широкий язык и дополнительный слойлук.
Теперь мне кажется, что стандартные заголовки, очевидно, должны быть внутренней частью этого лука и, следовательно, перед пользовательскими заголовками.Вы можете создать язык C-with-monsters, добавив материал в C-with-I / O, но люди, создавшие C-with-I / O, не начали с C-with-monsters.