Inhalt
1 Aufbau eines C-Programms nach
ANSI-Standard
1.3 Erzeugen eines ausführbaren
Programms
Link zur Vorlesung: http://www.informatik.uni-leipzig.de/~meiler/Propaed.dir/
Link zu Literaturhinweisen: http://www.informatik.uni-leipzig.de/~meiler/Literatur.html
Link zu Softwarehinweisen: http://www.informatik.uni-leipzig.de/~meiler/Install.html
1977 |
Brain W. Kernighan und Dennis M. Ritchie: „The C Progamming
Language” ( Sprachbeschreibung, Grundlage der meisten Compilerbauer, weder vollständig noch exakt. viele Sprachdialekte |
1983 |
American National Standards Institute: X3J11 Gründung eines technischen Komitees (X3J11), 50 Vertretern von C-Benutzergruppen aus allen Bereichen, mit dem Ziel der Standardisierung der Sprachbeschreibung von C, einschließlich einer einheitlichen Standardbibliothek. |
1989 |
X3J11: „ANSI – C“ oder „Standard – C“ |
⇒ C ist die „Sprache der Programmierer“,
vereint Vorteile der höheren Sprachen mit den Vorzügen einer maschinennahen
Programmierung, ist also geeignet sowohl für Anwenderprogramme als auch für
Systemprogrammierung.
modul.c
Direktiven für den Präprozessor
globale Deklarationen
Typ funktion_1( . . . )
Typ funktion_2( . . . )
. . .
Typ funktion_n( . . . )
int main( . . . )
{
lokale Deklarationen
Anweisungsfolge
}
Typ funktion_1( . . . )
{
lokale Deklarationen
Anweisungsfolge
}
Typ funktion_2( . . . )
{
lokale Deklarationen
Anweisungsfolge
}
. . .
Typ funktion_n( . . . )
{
lokale Deklarationen
Anweisungsfolge
}
Der
Quellcode eines C-Programms hat den Suffix .c . Ein
C-Programm ist eine Folge von Funktionen. Die Funktion int main()
ist Eintrittspunkt in das Programm ⇒ ∃!! „main“.
Sie gibt einen ganzzahligen (int) Wert zurück.
hallo.c
# include
<stdio.h>
int main()
{
printf( "Hallo, Welt!\n");
return 0;
}
· # include <stdio.h> ist eine Direktive (Befehl) für den Präprozessor (Vorübersetzer) und fügt in den Quellcode globale Deklarationen für Standardfunktionen ein.
· int printf( const char *, . . .); ist eine Standardfunktion zur Ausgabe am Bildschirm, welche in <stdio.h> deklariert ist und eine Zeichenkettenkonstante als Ausgabestring verlangt.
· return 0; veranlasst den Rücksprung ins Betriebssystem mit dem ganzzahligen Rückgabewert 0.
Bei der Erstellung eines ausführbaren Programms sind drei Schritte notwendig:
I. |
Editieren: |
Schreiben des Quelltextes mit Hilfe eines beliebigen Editors. |
II. |
Übersetzen: |
Jede zu einem C-Programm gehörige Quelldatei wird in drei Phasen zu einer Objektdatei übersetzt (Präprozessor, Compiler, Assembler). |
III. |
Binden: |
Die Objektdateien werden zusammen mit den benötigten Bibliotheksdateien zu einem ausführbaren Programm gebunden. |
zu I: $
nedit modul.c &
zu II und III: $ gcc [ optionen ] modul.c [ optionen ]
(optionen dienen der Steuerung des Übersetzens und des Bindens.)
Ausführen: $ ./a.out
hallo.c
$ nedit hallo.c &
$ gcc -ansi -Wall -O hallo.c -o hallo
$ ./hallo
-ansi Übersetzen im Ansi-Standard; -Wall veranlasst die Ausgabe aller Warnungen; -O erzeugt einen optimierten Objektcode und mit –o kann ein Name verschieden von a.out für die ausführbaren Datei angegeben werden, hier hallo.