C++ Kurs

Die Entwicklungsumgebung

Die Themen:

Übersicht

Als Einstieg in den C++ Kurs wollen wir uns zunächst einmal ansehen, welche Komponenten benötigt werden um ein C++ Programm zu erstellen. Bei den meisten C++ Entwicklungsumgebungen sind die in diesem Kapitel vorgestellten Komponenten Editor, Compiler und Linker zwar unter einer einheitlichen Oberfläche, der sogenannten IDE (Integrated Development Environment), zusammengefasst, jedoch sollten die Begriffe wie Compiler und Linker geläufig sein.

HinweisSollten die Begriffe Compiler und Linker schon bekannt und ein aktueller C++ Compiler einschließlich IDE auf Computer installiert sein, so kann auch gleich zum nächsten Kapitel übergegangen werden.

Editor

Fangen wir mit der Eingabe eines C++ Programms an. Für die Eingabe eines C++ Programms kann jeder beliebige ASCII-Editor verwendet werden, z.B. unter WINDOWS das Programm NOTEPAD++. Was aber auf keinen Fall verwendet werden darf, sind Editoren die Texte formatieren, wie dies z.B. bei MS Word der Fall ist. Diese Editoren legen außer dem eigentlichen Text noch Steuerzeichen mit in der Datei ab, die dann später den Compiler mit Sicherheit etwas verwirren.

Ist das Programm im Editor fertig eingegeben, so sollte die Datei vorzugsweise unter einen Namen mit der Erweiterung .cpp gespeichert werden. Auf manchem System haben C++ Programme auch eine davon abweichende Erweiterung, wie z.B. .cxx. Auf keinen Fall sollte aber die Erweiterung .c verwendet werden, da einige C++ Compiler sonst davon ausgehen, dass ein C Programm und nicht ein C++ Programm übersetzt werden soll. Und C Programme besitzen einen etwas anderen Sprachumfang als C++ Programme.

Die auf diese Weise mit dem Editor erstellten Dateien werden als Quellcode-Dateien bezeichnet. Ist ein Projekt umfangreicher als die in diesem Kurs verwendeten Beispiele, so sollte das Projekt in logische Einheiten untergliedert und für jede dieser logischen Einheit eine eigene Quellcode-Datei anlegt werden. Nehmen wir einmal an, es soll eine Anwendung erstellt werden die eine beliebige Berechnung durchführt und das Ergebnis dann ausgibt. Dazu unterteilen wir die Anwendung zunächst in einen Berechnungsteil und einen Ausgabeteil. Die Quellcode-Datei für die Berechnungen erhält dann z.B. den Namen calc.cpp und die für die Ausgabe print.cpp. Wie diese Quellcode-Dateien dann zu einer ausführbaren Datei zusammengefasst werden, sehen wir uns gleich an.

Und noch etwas Wichtiges zur Erstellung eines C++ Programms. Bei der Eingabe sollte eine einheitliche Schreibweise und Formatierung für alle C++ Programme verwendet werden. Diese Festlegung von Schreibweisen und Formatierungen wird auch als Codier-Richtlinien bezeichnet. Und da es schlichtweg nicht DIE Codier-Richtlinie gibt, bleibt es dem Programmierer überlassen, wie sein C++ Programm letztendlich aussieht. Nur sollte ein Programm genauso aussehen wie das andere. Im Internet gibt es unzählige C++ Codier-Richtlinien, von denen man sich die einem persönlich ansprechende raussuchen sollte. Eine frei zugänglich und sehr umfangreiche Codier-Richtlinie ist JSF++. Suchen im Internet einfach nach JSF++.

Compiler

Nach dem die Quellcode-Dateien eingegeben wurden, werden diese mit dem Compiler übersetzt. Beim Übersetzen der Quellcode-Dateien wird aus dem ASCII Quelltext zunächst einmal ein Zwischencode erzeugt, der vom Compiler in einer entsprechenden Datei abgelegt wird. Dateien mit diesem Zwischencode werden auch als Objekt-Dateien bezeichnet haben oft die Erweiterung .obj oder .o.

Der Grund für diesen 'Zwischenschritt' liegt unter anderem darin, dass das mit dem Editor eingegebene Programm alleine noch nicht lauffähig ist, sondern weitere Funktionen benötigt die vom Compiler-Hersteller zur Verfügung gestellt werden. Dazu gehören z.B. Funktionen für die Ein- und Ausgabe oder auch mathematische Funktionen wie sin(...). Diese Funktionen liegen in der sogenannten C Laufzeit-Bibliothek (C Runtime Library, CRT), die dem Programm im nächsten Schritt noch hinzugefügt wird. Dateien, welche die CRT-Funktionen enthalten, werden auch als Bibliotheks-Dateien bezeichnet und haben oft die Erweiterung .lib.

Doch was enthält nun so eine Objekt-Datei? Eine Objekt-Datei enthält im Prinzip den ausführbaren Code der übersetzten Quellcode-Datei, aber noch ohne Bezug auf bestimmte (absolute, fixe) Adressen, die die Lage des Codes und der Daten im Speicher angeben.

Linker

Der letzte Schritt bei der Erstellung eines C++ Programms ist das zusammenbinden der verschiedenen Objekt-Dateien und hinzufügen der Funktionen aus der CRT. Dieser Vorgang wird vom Linker durchgeführt. Der Linker bindet sozusagen alle Objekt-Dateien und die CRT-Dateien zusammen und fügt dem Programm die absoluten Adressen hinzu, d.h. er erzeugt letztendlich eine ausführbare Datei, die häufig die Erweiterung .exe besitzt.

CodeBlocks und MinGW

HinweisDiese Abschnitt behandelt die Entwicklung von C++ Programmen mit Hilfe der IDE CodeBlocks und des GNU C++ Compilers MinGW. Sollte eine andere IDE und/oder Compiler verwendet werden, so kann gleich zum nächsten Kapitel übergegangen werden.

Zunächst ist der MinGW Port des GNU C++ Compilers aus dem Internet herunterzuladen. Dabei ist darauf zu achten, dass eine Binär-Version runtergeladen wird und nicht der Quellcode des Compilers (Suche im Internet: 'download mingw binary'). Des Weiteren sollte die Version des Compilers 5.2 oder höher sein. Frühere Versionen haben noch einige Schwächen was die Umsetzung des C++14 Standards anbelangt.

Der runtergeladene Compiler ist dann in ein beliebiges Verzeichnis zu installieren und der Installationspfad des Compilers zum Systempfad (PATH-Variable) hinzuzufügen. Anschließend sollte getestet werden, ob der Compiler richtig installiert wurde. Dazu ist die Eingabeaufforderung (früher DOS-Box genannt) zu öffnen und der Befehl g++ -v einzugeben. Es sollte dann eine Ausgabe in etwa folgender Form ausgegeben werden:

Test MinGW

Im nächsten Schritt ist die IDE CodeBlocks aus dem Internet zu laden und zu installieren. Da der MinGW Compiler bereits installiert ist, wird lediglich die Version ohne den integrierten MinGW Compiler benötigt. Warum wir nicht die CodeBlocks Version mit integriertem MinGW Compiler nehmen hat seinen Grund darin, dass wir den aktuellsten MinGW Compiler verwenden wollen.

Standardmäßig übersetzt der C++ Compiler Programme nach dem "alten" C++98 Standard. Da wir aber die neuen C++14 Elemente nutzen wollen, müssen wir dies dem Compiler noch mitteilen. Öffnen Sie dazu die Compiler-Einstellungen über den Menüpunkt Settings - Compiler. Setzen Sie zunächst das Häckchen bei 'Enable warnings demanded by ..."

cb_option1

und geben dann unter Other options folgende Anweisung ein:

cb_option2

Speichern Sie Einstellungen ab.

Damit haben wir alle Komponenten um ein C++ Programm erstellen zu können und werden uns nun ansehen, wie dies vonstattengeht. Dazu starten wir zunächst CodeBlocks. Im Eröffnungsfenster ist die Option Create a new project auszuwählen. Unter CodeBlocks, wie übrigens auch unter den meisten anderen IDEs, kann nicht einfach der Quellcode eingeben und dieser dann übersetzt werden, sondern es ist dazu ein entsprechendes Projekt anzulegen. Der Grund hierfür ist, dass die meisten IDEs verschiedene Arten von Anwendungen erstellen können und dazu einige anwendungsspezifische Einstellungen benötigen.

CodeBlocks Konsolen-AnwendungZum Erlernen der Programmiersprache C++ verwenden wir den einfachsten Projekttyp, die Konsolen-Anwendung. Alle anderen Projekttypen verlangen schon sehr detaillierte Kenntnisse des jeweiligen Anwendungstyps. Klicken Sie jetzt das Symbol Console application an und anschließend auf den Button Go. Im nachfolgenden Dialog wird die im Projekt verwendete Sprache festgelegt. Wählen Sie hier C++ aus und klicken den Button Next> an.

Anschließend sind der Projektname sowie der Projektpfad anzugeben. Wir geben dem Projekt den Namen FirstCPP und legen das Projekt in einem beliebigen Ordner an. Klicken Sie danach erneut den Button Next> an.

Projekteinstellungen 

Als letztes ist der zu verwendende Compiler sowie die Projektkonfiguration anzugeben. Wählen Sie unter Compiler: den GNU GCC Compiler aus und lassen die beiden Konfigurationen Debug und Release ausgewählt.

Compiler Konfiguration

Der Unterschied zwischen der Debug- und der Release-Version ist, dass beim Übersetzen des Quellcodes in der Debug-Konfiguration zusätzliche Informationen mit ausgegeben werden, die es z.B. erlauben, ein Programm an einer beliebigen Anweisung anzuhalten oder auch Inhalte von Variablen anzusehen.

Öffnen Sie jetzt links den gesamten Arbeitsbereich (Workspace) und führen Sie dann einen Doppelklick auf die Quelldatei main.cpp aus, um die Datei in den Editor zu laden.

C++ Standard Programm

CodeBlocks hat beim Anlegen des Projekts bereits DAS Standard-Programm für den Einstieg in die C++ Programmierung erstellt, nämlich eines, welches den Text "Hello world!" ausgibt. Wir wollen aber noch etwas mit der IDE spielen und entfernen deshalb zunächst die Anweisung using namespace std; und die beiden Anweisungen zwischen den Klammern { und }. Anschließend sind die beiden nachfolgenden Anweisungen innerhalb der Klammern einzugeben:

Das erste C++ Programm

Die Funktionsweise des Programms soll uns an dieser Stelle nicht interessieren, wir wollen ja lediglich die Ausführung des Compilers testen.

Übersetzen Sie das Programm, indem Sie entweder den Menüpunkt Build - Build auswählen oder das Symbol Build Icon in der Symbolleiste anklicken. Konnte der Übersetzungsvorgang durchgeführt werden, so sollten im Build messages Fenster folgende Meldungen ausgegeben werden:

Fehlerausgabe

D.h. der Compiler hat in unserem Programm noch einen kleinen Fehler in der Zeile 5 entdeckt. Durch einen Doppelklick auf die Zeile mit der Fehlermeldung gelangen wir zur entsprechenden Stelle im Quellcode. Führen Sie jetzt also einen Doppelklick auf die Fehlermeldung error: 'x' was not declared.... aus, um den Cursor auf die 5. Zeile in der Quelldatei zu setzen.

Fügen Sie dann unmittelbar vor die Anweisung x = 5; das Wort int, gefolgt von einem Leerzeichen, ein, so dass die Anweisung wie folgt aussieht: int x = 5;.

Übersetzen Sie das Programm erneut und es sollten keine weiteren Fehler mehr angezeigt werden.

Anschließend können wir das Programm einmal starten. Klicken Sie in der Symbolleiste das grüne Symbol Run Icon an. Das Programm wird gestartet, ein Konsolenfenster geöffnet und es erfolgt eine entsprechende Ausgabe.

Konsole

Drücken Sie eine beliebige Taste um das Konsolenfenster zu schließen.

Als Nächstes werden wir uns kurz den GNU Debugger gdb ansehen. Mit Hilfe des Debuggers kann ein Programm z.B. zeilenweise ausgeführt oder der Inhalt von Daten angezeigt werden. Klicken Sie einmal mit der Maus rechts neben die Zeilennummer 6, so dass ein roter Punkt wird an dieser Stelle angezeigt wird.

Breakpoint

Ein solcher roter Punkt kennzeichnet einen Haltepunkt (Breakpoint). Wenn Sie jetzt das rote Symbol Start Debugging anklicken, wird das Programm gestartet und beim Erreichen eines Haltepunkts unterbrochen. Nach Erreichen des Haltepunkts können Sie sich nun den Inhalt der Variablen x ansehen und auch verändern.

Watch FensterKlicken Sie dazu mit der rechten Maustaste auf die Variable (den Buchstaben) x und wählen aus dem angezeigten Kontextmenü den Eintrag Watch 'x' aus. Daraufhin werden links der Wert und der Datentyp der Variablen x im Watch-Fenster angezeigt. Um den angezeigten Wert zu ändern, klicken Sie in das Feld mit dem Wert 5 und geben darin einfach einen neuen Wert ein.

Beenden Sie das Programm, indem Sie erneut das rote Symbol Continue Debugging anklicken um das Programm bis zu seinem Ende weiterlaufen zu lassen.

Soweit die kurze Einführung in die C++ Entwicklungsumgebung. Auf der nächsten Seite geht's dann endlich los mit der C++ Programmierung.

HinweisUm Ordnung auf Ihrer Festplatte zu halten, sollten Sie spätestens beim Abschluss eines Projekts die vom Compiler und Linker stellten Zwischendateien entfernen. Um die Zwischendateien zu löschen, klicken Sie im Projektmappen-Explorer das Projekt mit der rechten Maustaste an und wählen aus dem Kontextmenü den Eintrag Clean workspace aus.