2 Compiler-Informationen
2.1 Wie erzeuge ich ein Programm?
Dieses Kapitel ist das einzige Kapitel, das sich notwendigerweise auf einen bestimmten Rechner und sogar auf einen bestimmten C-Übersetzer beziehen muß, da die Bedienung der einzelnen C-Übersetzer sehr unterschiedlich sein kann. Wir werden hier auch nur C-Compiler betrachten und uns nicht mit C-Interpretern beschäftigen, bei denen die Programmerzeugung etwas anders aussieht.
2.1 Wie erzeuge ich ein Programm? Der grundsätzliche Weg von der Idee zum lauffähigen Programm kann so gekennzeichnet werden:
Mit dem Editor wird eine Quellencodedatei erzeugt, die vom C-Compiler in eine Objektdatei übersetzt wird. Aus dieser erzeugt der Linker unter Verwendung der C-Bibliothek dann das lauffähige Programm. Oftmals sind die Funktionen von Compiler und Linker in einem Programm zusammengefaßt. 2.1.1 MS-DOS System Auf einem MS-DOS System gibt es z.B. die Editoren bzw. Textverarbeitungsprogramme EDLIN, EDIT und WORD. Der Compiler hat je nach Hersteller einen anderen Namen. Zum Linken wird meist der MS-DOS Linker verwendet. Die Dateinamen haben üblicherweise folgende Dateinamenergänzungen:
Mit dem Aufkommen von Programmierumgebungen für PCs (Zorlite C, Microsoft C und Turbo C) hat der Benutzer eine komfortable Umgebung zur Erzeugung und zum Austesten von Programmen. Sie sind (fast) selbsterklärend und arbeiten mit Pull-Down-Menüs. Weiterhin verfügen diese Umgebungen über einen integrierten Editor und eine On-Line-Hilfe-Funktion. Sie zeigen Syntaxfehler im Quellencode an. Dies ist insbesondere für Anfänger in der Programmiersprache C sehr wertvoll, da Fehler somit leicht gefunden werden. Meist verfügen Sie auch über einen Debugger, mit dem man das ablaufende Programme an beliebig wählbaren Stellen anhalten, Variablen abfragen und dann weiterlaufen lassen kann. Damit lassen sich auch Laufzeitfehler (insbesondere bei der Zeigerverarbeitung) aufspüren. 2.1.2 UNIX System Auf einem UNIX System kann man als Editor z.B. vi, mg, emacs oder pine verwenden. Der C-Compiler schließt hier die Linkfunktion mit ein und heißt cc. Der Compiler entspricht meist der ANSI-Norm. Bekannt ist noch der für viele Systeme frei erhältliche GNU-C Compiler gcc. Die Dateinamen haben üblicherweise folgende Dateinamenergänzungen:
Die Bibliotheksdateien befinden sich meist im Verzeichnis /usr/lib und die Include-Dateien stehen in /usr/lib/include. Auf einem UNIX System gibt es weiterhin einen C-Syntaxchecker. Dieses Programm heißt lint und erzeugt keinen Code, unterwirft das Quellenprogramm aber einer ausführlichen Syntaxanalyse, die der normale C-Compiler CC nicht bietet. Ein Programm, das von lint ohne Fehlermeldung bearbeitet wurde, kann als höchst portabel betrachtet werden. Schließlich gibt es, je nach System, auch eine symbolischen Debugger sdb oder dbx. Nähere Informationen zu cc, gcc, lint, dbx und sdb kann man auf einem UNIX System mit Hilfe des man-Kommandos erhalten.
2.2 Aufruf und Umgang mit dem Compiler in den Übungen Der grundlegende Aufruf für den Compiler lautet:
Damit wird das Quellenprogramm in der Datei "Dateiname.c" übersetzt und anschließend automatisch der Linker aufgerufen. Es entsteht im allgemeinen keine Objektdatei (mit der Dateinamenerweiterung .o) sondern nur das fertige Programm in der Datei a.out. Wandelt man den obigen Aufruf wie folgt ab:
so wird das fertige Programm in die Datei "Dateiname1" geschrieben. Die Dateinamen "Dateiname1" und "Dateiname2" können auch gleich sein. Die Rechte zur Programmausführung für den Benutzer werden in beiden Fällen automatisch gesetzt. Es empfiehlt sich, fertige Programme und Quellencodedateien in einem Unterverzeichnis des eigenen Home-Verzeichnisses aufzubewahren, damit man einen besseren Überblick behält.
2.3 INCLUDE-Dateien und Bibliotheksfunktionen von C Wichtig zur Programmerzeugung sind weiterhin die C-Bibliothek und die Header-(Include-)Dateien. Deren Namen sind, da sie fast in jedem C-Programm benötigt werden, standardisiert. Ebenso natürlich die Namen der Bibliotheksfunktionen. Die folgenden Listen der Include-Dateien und der Bibliotheksfunktionen beziehen sich auf TURBO C 2.0. Sie werden hier angegeben, um Ihnen einen Gesamtüberblick zu geben. Viele Funktionen und Include-Dateien sind aber nicht bei allen C Compilern vorhanden (insbesondere natürlich nicht die MS-DOS spezifischen). Hier sind zunächst die Include-Dateien aufgelistet. Das Hauptanwendungsgebiet der jeweiligen Include-Datei ist ebenfalls angegeben.
Es folgt nun eine Liste der Bibliotheksfunktionen. Sie sind zu Kategorien zusammengefaßt, um ein schnelleres Suchen nach einer Funktion für eine bestimmte Aufgabe zu ermöglichen. Manche Funktionen kommen mehrfach vor, da sie verschiedenen Kategorien zugeordnet werden können. Die Kategorien sind alphabetisch geordnet; ebenso die Funktionsnamen innerhalb der einzelnen Kategorien. Die Funktionsnamen geben oft schon einen Hinweis auf ihre Funktion. Weitergehende Informationen erhält man durch das Schreiben des Namens der Funktion, Positionieren des Cursors auf diesen Namen und die Anfrage nach Syntaxhilfe (Funktionstaste LOOKUP). Eine ausführliche Beschreibung der Funktionen findet man im Referenzhandbuch für den jeweiligen Compiler. Diagnose-Routinen (Prototypen in assert.h, math.h und errno.h)
Directory-Routinen (Prototypen in dir.h)
Ein-/Ausgabe-Routinen (Prototypen überwiegend in stdio.h und io.h, aber auch in conio.h und signal.h)
Interface-Routinen für DOS, BIOS und 8086 (Prototypen überwiegend in dos.h, aber auch in bios.h)
Klassifizierungs-Routinen (Prototypen in ctype.h)
Konvertierungs-Routinen (Prototypen überwiegend in stdlib.h, einige auch in ctype.h)
Mathematik-Routinen (Prototypen überwiegend in math.h, aber auch in float.h und stdlib.h)
Prozeß-Routinen (Prototypen in process.h)
Sonstige-Routinen (Prototypen in setjmp.h)
Speicher-Verwaltungs-Routinen (Prototypen überwiegend in alloc.h, aber auch in stdlib.h und dos.h)
Standard-Routinen (Prototypen in stdlib.h)
String- und Speicher-Manipulations-Routinen (Prototypen überwiegend in string.h, aber auch in mem.h)
Zeit- und Datums-Routinen (Prototypen in time.h und dos.h)
|
11. November 1999, Peter Klingebiel, DVZ |