Du bist hier: Startseite > Entwicklung (C/C++) > C++ Grundlagen > Einbinden von Header- und cpp Dateien

Einbinden von Header- und cpp Dateien

Headerdateien sind gewöhnliche C++-Dateien, die im Normalfall Funktionsdeklarationen und ähnliches enthalten.

Deklarationen machen dem Compiler bekannt, wie etwas benutzt wird. Wenn du also eine Headerdatei einbindest und darin eine Funktionsdeklaration steht, dann weiß der Compiler wie die Funktion aufgerufen wird. Der Compiler weiß zu diesem Zeitpunkt nicht, was die Funktion tut, aber das ist auch nicht nötig um sie aufrufen zu können.

Das Einbinden einer Headerdatei erfolgt über die Präprozessordirektive #include. Der Code in der Datei die mit include referenziert wird, wird vom Präprozessor einfach an der Stelle eingefügt, an der das include stand.

Datei:  Quelldateien/main.cpp
  1. #include <iostream> // std::cin
  2. #include <stdlib.h> // EXIT_SUCCESS
  3. #include "header.h"
  4.  
  5. int main(void)
  6. {
  7. aufruf();
  8.  
  9. std::cin.get();
  10. return EXIT_SUCCESS;
  11. }

Im obigen Code wird in Zeile 2 mit #include "header.h" eine Headerdatei Namens header.h eingebunden. Um diese Datei zu erstellen, klicke im Projektmappen-Explorer mit rechter Maustaste auf Headerdateien > Hinzufügen > Neues Element. Wähle im Fenster Headerdatei (.h) aus und gebe als Namen header ein.

Im Projektmappen-Explorer findest du jetzt unter Headerdateien die eben angelegte Datei. Mit einem Doppelklick lässt sie sich öffnen.

Datei:  Headerdateien/header.h
  1. #ifndef HEADER_H
  2. #define HEADER_H
  3.  
  4. void aufruf(void);
  5.  
  6. #endif

Da Headerdateien oft andere Headerdateien einbinden, kann es leicht passieren, dass eine Headerdatei mehrfach eingebunden wird. Da viele Header nicht nur Deklarationen, sondern auch Definitionen enthalten, führt dies zu Compiler-Fehlermeldungen, da innerhalb einer Übersetzungseinheit ein Name stets nur genau einmal definiert werden darf. Um dies zu vermeiden, wird der Präprozessor verwendet. Am Anfang der Headerdatei wird ein Präprozessor-ifndef ausgeführt, dass prüft ob ein Symbol nicht definiert wurde, ist dies der Fall, wird der Programmcode bis #endif ausgeführt. Im #ifndef-Block wird dann das Symbol definiert und somit ist ein zweites Laden nicht mehr möglich. Der Symbolname wird üblicherweise aus dem Dateinamen in Großbuchstaben abgeleitet. In diesem Fall wurde der Punkt durch einen Unterstrich ersetzt.

In diesem Beispiel wurde dem Compiler jetzt mitgeteilt, dass es später noch eine Funktion Namens aufruf() geben wird. Diese müssen wir natürlich erst noch erstellen. Hierzu klicken wir wieder mit rechts im Projektmappen-Explorer auf Quelldateien > Hinzufügen > Neues Element. Jetzt wählen wir C++-Datei(.cpp) und geben als Namen exakt den gleichen Namen wie bei der Headerdatei ein (also header).

Datei:  Quelldateien/header.cpp
  1. #include <iostream> // std::cout, std::endl
  2. #include "header.h"
  3.  
  4. void aufruf(void)
  5. {
  6. std::cout << "CPP + Header Datei eingebunden!" << std::endl;
  7. }

Über die Art und Weise wird Programmcode ausgelagert. Es sollte alles irgendwie ausgelagert und eindeutig benannt werden, damit später alles gut nachvollziehbar ist.

Kommentare zu diesem Beitrag

Sie müssen angemeldet sein, um eine Nachricht zu erstellen. Anmelden »