Weil, wie Sie selbst sagten, es nicht machbar ist, die "ganze Software" in eine Quelldatei zu legen.
Wenn Ihr Programm sehr klein ist, dann ist es ja einfacher, alles in eine .c Datei zu schreiben. Wenn Ihr Programm größer wird, wird es hilfreich, Dinge zu organisieren, indem verwandte Funktionen in verschiedenen .c-Dateien zusammengefasst werden. Außerdem können Sie in den .h-Dateien die Deklarationen einschränken, die Sie Deklarationen von Dingen geben, die angeblich sind, um von Dingen in anderen .c-Dateien verwendet zu werden. Wenn eine .c-Datei nichts enthält, auf das außerhalb von ihr zugegriffen werden kann, benötigt sie keine Kopfzeile.
Zum Beispiel, wenn .c hat Funktion foo() und fooHelper(), aber niemand außer foo() soll fooHelper() direkt aufrufen, dann durch foo() und fooHelper() in foo.c setzen, nur die Deklaration von foo() in foo.h setzend, und fooHelper() als statisch deklarierend, hilft es zu erzwingen, dass andere Teile Ihres Programms nur auf foo() zugreifen sollten und fooHelper() nicht wissen oder interessieren sollten. Art einer nicht objektorientierten Form der Verkapselung.
Schließlich sind Suchmaschinen in der Regel intelligent genug, um nur die Dateien wiederherzustellen, die sich seit dem letzten Build geändert haben. Die Aufteilung in mehrere .c-Dateien (mit .h-Dateien zum Teilen von Teilen) beschleunigt die Erstellung.
wenn ich Erklärungen haben, brauchen von mehreren Dateien geteilt werden, und sie entsprechen nicht logisch einer .c-Datei? sagen wir einige # define's, die von den meisten Dateien benutzt werden. Ist es nicht besser, eine Header-Datei mit all diesen zu erstellen? etwas Neutrales, das sich nicht mit einer .c-Datei verbindet? –
Ja. Die Idee ist, dass jeder Header eine Gruppe von Deklarationen enthält, die sich aufeinander beziehen. In den meisten Fällen passt es, dass jede .c-Datei über eine entsprechende .h-Datei verfügt. Sie können jedoch zusätzliche .h-Dateien hinzufügen (z. B. um globale Konstanten oder Enums zu definieren). Letztendlich sind Sie dafür verantwortlich, wie Sie mit Kopfzeilen Ihren Code organisieren. –
@JasonWilliams: Oder zusätzliche .c-Dateien, was auch immer angebracht ist. – Deduplicator