# Header-Datei



## Mr.Mase (28. Mai 2014)

Hallo Leute,

ich befasse mich gerade mit C++ und Frage mich für was genau die Header-Datei vorhanden ist.

Gruß 

Mr.Mase


----------



## turtle (28. Mai 2014)

Kompilieren in C/C++ geschieht in zwei Phasen.

Die erste Phase ist das Übersetzen des Quelltextes in binäre Objektdateien. Diese Kompilierung geschieht ohne Wissen anderer Dateien oder Libraries.

Die zweite Phase nennt man "Linking", indem aus allen Objektdateien eine ausführbare Datei erzeugt wird.

Damit beim Übersetzen in Phase 1, die fehlenden/unbekannten Funktionen etc. bekannt sind, schreibt man diese Deklarationen in Header-Files. 

Somit muss nicht die ganze C++-Quelldatei erneut übersetzt werden, sondern nur die kleinere Deklarationsdatei muss geparsed werden.


----------



## Mr.Mase (28. Mai 2014)

Hey,

Danke für die Schnelle Antwort,

das heißt also dass Funktionen in der .cpp Datei deklariert und in der .h Datei definiert werden ?

Ich hab jetzt schon gesehen das manche bei kleineren Programmen die Header-Datei einfach ganz weg lassen, was ist jetzt richtig oder falsch :bahnhof:



Gruß 

Mr. Mase


----------



## Mathias1000 (28. Mai 2014)

Funktionieren tut es auch ohne Header-Datei, nur ist dies angeblich kein sauberer C-Programmiertill.

Ich persöhnlich finde es einfacher ohne Header-Dateien zu programmieren, mit den Headern ist es unübersichtlich.

Vieleicht kommt das davon, das ich eingefleischter Pascal-Programmierer bin.


----------



## turtle (29. Mai 2014)

> das heißt also dass Funktionen in der .cpp Datei deklariert und in der .h Datei definiert werden ?


Genau umgekehrt

In der .h Datei steht die Deklaration WAS unter einer Funktion/Methode whatever gemeint ist
und in der .cpp Datei steht die Definition dieses Etwas.

Daher kannst du auch ohne Header Datei auskommen, denn die Definition beinhaltet auch eine Deklaration. 

Ist aber in grösseren Projekten unschön, weil man nicht "einfach" sehen kann, welche Dinge aus anderen Klassen referenziert wird.


----------



## Mr.Mase (29. Mai 2014)

Hey,

Vielen Dank !!!

Mich beschäftigt noch eine weitere kleine Frage:

Was sind alles Grundelemente einer C++ Datei:


Header-Datei
Main-Date
Funktionen cin/cout
 was sind sonst noch typische Grundelemente einer C++ Datei 


Gruß 

Mr.Mase


----------

