| Titel: | C++ Uebersetzungseinheiten | |
| Beschreibung: | Übersetzungseinheiten mit Headerdatei und Implementierungsdatei. Projektdateien richtig Linken und Kompilieren, | |
| Kategorie: | Programmierung | |
| Unterkategorie | C/C++ | |
| Benötigtes Fachwissen: | Fortgeschrittene | |
| Artikel überarbeiten: | C++ Uebersetzungseinheiten | |
Übersetzungseinheiten in C++
Ein Programm besteht in den wenigsten Fällen aus nur einer Datei. Der Hintergrund liegt darin, die Übersichtlichkeit durch Strukturierung zu verbessern und um größere Arbeiten in einem Projekt auch sauber aufteilen zu können.
In C++ werden Dateien in Headerdateien >>*.h<< und Implementierungsdateien >>*.cpp<< gegliedert und beim späteren Gebrauch die *.h-Datei über die Präprozessoranweisung
#include "Datei.h" in die gewünschte Datei hineinkopiert
Headerdatei
Die Headerdatei beinhaltet Deklarationen, welche in mehreren Übersetzungseinheiten benutzt werden sollen.
Implementierungsdatei
Die Implementierungsdatei enthält den eigentlichen Code.
Übersetzungseinheiten erstellen und zum Programm kompilieren
Wir erstellen nun ein einfaches Programm mit folgenden drei Dateien:
* main.cpp
* helloWorld.h
* helloWorld.cpp
// main.cpp #include "helloWorld.h" int main ( ) { printHello(); return 0; }
// helloWorld.h void printHello(); extern text* Name;
// helloWorld.cpp #include <iostream> #include "helloWorld.h" void printHello ( ) { std::cout << "HelloWorld!" << endl; }
// Mit GNU GCC-Compiler Programm erstellen
// Schritt 1. Übersetzen
// Schritt 2. Linken
// Schritt 1: Aus cpp Objektdateien mit Endung *.o erzeugen
g++ -c helloWorld.cpp
g++ -c main.cpp
// Schritt 2: Objektdateien zu einer Ausführbaren Datei linken
g++ main.o helloWorld.o -o a.out
Mehrfaches Kopieren verhindern// Schritt 1. Übersetzen
// Schritt 2. Linken
// Schritt 1: Aus cpp Objektdateien mit Endung *.o erzeugen
g++ -c helloWorld.cpp
g++ -c main.cpp
// Schritt 2: Objektdateien zu einer Ausführbaren Datei linken
g++ main.o helloWorld.o -o a.out
Um ein mehrfaches Kopieren einer Inkludierten Header-Datei zu verhindern, sollte jede Header-Datei mit folgenden Präprozessoranweisungen geschützt werden:
#ifndef HELLO_WORLD #define HELLO_WORLD /* * Hier der eigentliche Code */ #endif
siehe auch:
C++ Präprozessor Makros