C++
VeröffentlichtRevision 1

Vom Quelltext zum Programm: Build und Fehlermeldungen

Wenn du auf „Build“ klickst, führt die Entwicklungsumgebung mehrere Arbeitsschritte aus. Übersetzungszeit bezeichnet die Zeit, in der aus dem Quelltext das Programm entsteht. Laufzeit ist die Zeit, in der das fertige Programm läuft.

Vom Quelltext zum Programm: Build und Fehlermeldungen#

Einführung · Lektion 6 von 60

Voraussetzungen: main. Lernziel: Du erkennst, in welchem Schritt ein Fehler entsteht.

Wenn du auf „Build“ klickst, führt die Entwicklungsumgebung mehrere Arbeitsschritte aus. Übersetzungszeit bezeichnet die Zeit, in der aus dem Quelltext das Programm entsteht. Laufzeit ist die Zeit, in der das fertige Programm läuft.

Die Schritte im Überblick#

Schritt

Aufgabe

Beispiel für ein Problem

Präprozessierung

Verarbeitet etwa #include und bedingte Übersetzung

Headerdatei nicht gefunden

Kompilierung

Prüft und übersetzt C++-Code

Semikolon fehlt, Typen passen nicht

Assemblierung

Erzeugt Objektcode aus maschinennaher Darstellung

Werkzeug- oder Zielplattformproblem

Linken

Verbindet Objektdateien und Bibliotheken

Funktion deklariert, aber Definition fehlt

Programmstart und Ausführung

Betriebssystem lädt und führt das Ergebnis aus

Ungültige Eingabe oder Laufzeitfehler

Eine Objektdatei enthält übersetzten Code und Informationen zum späteren Verbinden. Sie ist normalerweise noch kein eigenständig ausführbares Programm. Ein Symbol ist dabei unter anderem ein Name, unter dem der Linker eine Funktion finden soll.

Eine Fehlermeldung lesen#

Der folgende Ausschnitt ist absichtlich unvollständig und falsch:

C++
1// Absichtlich falsch: Ausschnitt innerhalb von main2std::cout << "Hallo\n"3return 0;

Ein Compiler könnte expected ';' before 'return' melden: Vor return wurde ein Semikolon erwartet. Meldungen bestehen häufig aus Dateiname, Zeile, Spalte und Beschreibung. Beginne mit dem ersten sachlichen Fehler und schaue auch in die Zeile davor. Ein fehlendes Zeichen kann viele Folgefehler verursachen, also Meldungen, die nur wegen des ersten Problems entstehen.

Warnung ist nicht gleich Erfolg#

Eine Warnung weist auf verdächtigen Code hin, obwohl eine ausführbare Datei entstehen kann. Beispiele sind eine unbenutzte Variable oder eine problematische Zahlenumwandlung. Behebe Warnungen bewusst, statt sie pauschal abzuschalten. Die genaue Warnungsmenge hängt vom Compiler und seinen Optionen ab; -Wall bedeutet bei GCC nicht „jede existierende Warnung“. Die GCC-Dokumentation zu Warnungsoptionen beschreibt die Gruppen.

Drei unterschiedliche Fehlerarten#

Ein Syntaxfehler verletzt die Sprachschreibweise. Ein Linkerfehler entsteht beim Verbinden übersetzter Teile. Ein logischer Fehler lässt gültigen Code etwas Falsches berechnen. 2 + 2 statt 2 * 2 fällt bei diesen Zahlen nicht auf; mit 2 und 3 schon. Testfälle müssen deshalb mehr als nur ein zufällig passendes Ergebnis abdecken.

Ein Laufzeitfehler tritt während der Ausführung auf. Nicht jeder Laufzeitfehler wird freundlich gemeldet. C++ kennt außerdem undefiniertes Verhalten: Bei bestimmten Regelverletzungen macht die Sprache keine Vorgabe mehr für das Ergebnis. Ein Absturz ist nur eine mögliche Folge. Darauf kommen wir bei Speicher und Zeigern zurück.

Übung#

Du änderst einen Text, der Build schlägt fehl, und beim Start erscheint die alte Ausgabe. Warum?

Lösung

Wahrscheinlich wurde die letzte erfolgreich erzeugte Programmdatei gestartet. Lies das Build-Ergebnis, behebe den Fehler und überprüfe den Pfad der gestarteten Datei.

Weiterlernen#

Zurück: int main(), void und der Rückgabewert · Kursübersicht · Weiter: Text und Zahlen mit std::cout ausgeben

Mitwirkende 1

Menschen, deren Änderungen in dieser Seite veröffentlicht wurden.

Kommentare 0

Kommentare sind für diese Seite deaktiviert.