Zitat:
Wieso sollte ich die an einem Ort deklarieren und woanders schreiben? Ist doch umständlicher!
Genau das machst du unter Delphi. Dort hast du einen interface- und einen implementation-Abschnitt. In C/C++ ist die Header-Datei der interface-Abschnitt, und die Implementierungs-Datei halt der implementation-Abschnitt.
Das hängt damit zusammen, dass es kein
Unit-Konzept in C/C++ gibt. Aus diesem Grund müssen externe Funktionen dem Compiler bekannt gemacht werden, indem sie deklariert werden, und wenn du das nicht jedesmal selbst machen willst, überlässt du es dem Präprozessor, der auch nicht mehr macht, als die #include-Direktive durch den Inhalt der Header-Datei zu ersetzen.
Wenn du jetzt die Funktionen in der Header-Datei implementierst und diese in mehreren Quellmodulen einbindest, wird jedes dieser Module eine Kopie der Funktion enthalten, das heißt, du bläst den Objektcode unnötig auf. Alternativ beschwert sich wie in Chewies Fall der Linker, dass er gleichnamige Funktionen mehrmals erhält und diese binden soll.
Aus diesem Grund ist es notwendig, Deklaration und Implementierung von Funktionen (und korrekterweise auch von Daten) strikt zu trennen.