Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

Re: [C-Präprozessor]

  Alt 23. Okt 2004, 19:36
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat