In diesem Aufgabenteil gehe ich davon aus, dass Sie bereits die Übung Hello World in C erfolgreich abgeschlossen haben. Das heißt Sie haben nun einen Ordner cgb_01 mit Ihrem Hello World Programm in Ihrem Projektordner.

Grundsätzlich sollten Sie wissen, dass C++ lediglich eine Erweiterung von C ist. Das bedeutet unser C-Code würde genauso auch in C++ laufen, wenn wir die C-Standard-Library einbinden. Allerdings bietet C++ zusätzliche Sprachkonstrukte, die es uns als Entwickler leichter machen bestimmte Programmierparadigmen umzusetzen und Bibliotheken einzubinden die in C++ geschrieben sind. Im Rahmen der Masterveranstaltungen werden wir dahr auf C++ setzen. Um nun aus der C Version von Hello World eine reine C++ Version zu machen, nehmen wir die folgenden Anpassungen vor.

Computergrafik

Wenn Sie diese Übung im Rahmen der Veranstaltung Computergrafik im Master machen, dann erstellen Sie eine Kopie des Ordners cgb_01 und nennen Sie ihn cgm_01.

Effiziente Algorithmen in der Computergrafik

Wenn Sie diese Übung im Rahmen der Veranstaltung Effiziente Algorithmen in der Computergrafik machen, dann erstellen Sie eine Kopie des Ordners cgb_01 und nennen Sie ihn cgx_01.

Los gehts…

Ab sofort arbeiten wir in diesem neuen Ordner und erstellen darin eine C++ Version von Hello World.

main.c

Benennen Sie die Datei main.c um in main.cpp. Dies ist zwar technisch nicht notwendig aber eine Konvention an die wir uns halten wollen. Damit wissen andere Entwickler, dass wir hier C++ Code schreiben wollen. Anschließend passen Sie den Inhalt von main.cpp wie folgt an:

// Hello World in C++

#include <cstdio>

int main()
{
    printf("Hello World!\n");
    
    return 0;
}

Wie sie sehen, ist die einzige notwendige Änderung, damit unser Code in C++ kompilierbar ist, das include Statement. Statt <stdio.h> schreiben wir nun <cstdio>. Die Dateiendung (.h) von eingebundenen Bibliotheken fällt unter C++ weg und das Prefix c kommt dazu um zu signalisieren, dass wir hier eine C-Bibliothek in C++ Code einbinden.

Der Rest des Codes ist identisch. Damit wird klar, wie eng C und C++ miteinander verwandt sind. Man kann also durchaus im Stil von C programmieren und lediglich einige ausgewählte Funktionen von C++ nutzen. Man nennt diese Art der Programmierung auch “C-Style C++”.

C++ fügt in erster Linie neue Funktionen zu der bestehenden Sprache hinzu. Um von einer dieser neuen Funktionen gebrauch zu machen ändern Sie Ihren Code in der main.cpp wie folgt:

// Hello World in C++

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    
    return 0;
}

In dieser Version nutzen wir nun die C++ Bibliothek IOStream. Für unsere Textausgabe nutzen wir nicht mehr einen Funktionsaufruf sondern senden den Hello-World-String an einen Stream. std::cout ist der Stream für die Standardausgabe im Terminal. Diese Art der Programmierung ist besonders sinnvoll, wenn man Programme schreibt, die Daten transformieren oder konvertieren. Denken Sie z.B. an den Unix Befehlt grep oder an eine Software die Videos streamt. All das könnte man natürlich auch mit Funktionsaufrufen programmieren, aber Streams machen das Konzept für uns Entwickler logischer und besser verständlich.

Makefile

In unserem Makefile müssen wir ebenfalls alle Stellen anpassen, an denen auf die main.c verwiesen wird. Hier muss nun main.cpp stehen. Und der Kompileraufruf muss von gcc auf g++ geändert werden, damit auch der C++ Kompiler genutzt wird. Damit sieht die fertige makefile Datei wie folgt aus:

bin/hello: obj/main.o bin
	g++ -g obj/main.o -o bin/engine

obj/main.o: main.cpp obj
	g++ -g -c main.cpp -o obj/main.o

bin:
	mkdir -p bin

obj: 
	mkdir -p obj

run: bin/engine
	bin/engine

clean:
	rm -rf obj
	rm -rf bin

Testen

Wenn alles geklappt hat, dann können Sie ihren Code nun wieder mit dem Befehl make kompilieren oder mit make run ausführen. Testen Sie das alles funktioniert.

Lernziele

Sie haben den Unterschied zu C verstanden und erkennen an bestimmten Merkmalen im Code mit welcher Sprache Sie es zu tun haben.