Blatt 5

Übungen zu Systemnahe Software

Wintersemester 95/96

Sektion Angewandte Informationsverarbeitung

Abgabe: Donnerstag, den 7.12.95

UMZUG AUF DIE THALES - ANSI-C

Aufgabe 1: 1 Punkt

Packen Sie Ihre Lösung von Blatt 4 Aufgabe 1 mit dem Kommando shar auf der Colossix zusammen und schicken Sie sich via mail die gepackten Module auf Ihren Login auf der Thales. Rufen Sie dort das Mailtool elm auf, speichern das Archiv in eine Datei, löschen den hinzugefügten Mailheader im Archiv, und entpacken Sie die Dateien auf der Thales in einem geeigneten Verzeichnis mit sh archivname wieder.

Falls Sie aus erfindlichen Gründen es nicht schaffen (z.B. Colossix läuft wieder mal nicht, sie hatten keine Lust auf Blatt 4 Aufgabe 1 ...), Ihre Dateien auf die Thales zu bewegen, so kopieren Sie einfach die Dateien aus /home/fermat/grabert/soft/loes/4/1 in Ihr Thales-Verzeichnis.

Aufgabe 2: 3 Punkte

Jetzt geht es los: modifizieren die Lösung von Blatt 4 Aufgabe 1 dahingehend, daß Sie sowohl in den .c wie auch den .h-Dateien die ANSI-C-Notation für Funktionen verwenden.

Aufgabe 3: 6 Punkte

Schreiben Sie ein ANSI-C-Programm, das in der Lage ist, aus einer syntaktisch korrekten ANSI-C-Quelle (.c-Datei) Funktionsdeklarationen und globale Variablen zu extrahieren, die von einem anderen Modul importiert werden können. (Hilft beim Erstellen von "Definitionmodulen", sprich .h-Dateien!)

Beachten Sie dabei, daß manche Deklarationen in Kommentaren oder evtl. in Strings stehen können. Diese müssen natürlich übergangen werden.

Bsp.: aus dem Modul

int ich_bin_global;

extern char *ich_bin_extern;

/* char *ich_wäre_gern_global() */

static int lokal(char *egal)

{ /* viel Text */ }

struct plist *global(char *eben_nicht_lokal)

{ /* wenig Sinn */ }

main(int argc, char **argv)

{ /* genialer Algorithmus */ }

sollten folgende Zeilen herausgefiltert werden:

int ich_bin_global;

struct plist *global(char *eben_nicht_lokal)

main(int argc, char **argv)