Inhalt

 

 

1        Aufbau eines C-Programms nach ANSI-Standard. 1-2

1.1         Geschichte. 1-2

1.2         Grundstruktur 1-3

1.3         Erzeugen eines ausführbaren Programms. 1-4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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


1      Aufbau eines C-Programms nach ANSI-Standard

1.1      Geschichte

 

1977

Brain W. Kernighan und Dennis M. Ritchie:

„The C Progamming Language” (New Jersey):

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.

 

 


1.2      Grundstruktur

 

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.

 

 

1.3       Erzeugen eines ausführbaren Programms

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.