Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 9 Funktionen
Pfeil 9.1 Was sind Funktionen?
Pfeil 9.2 Wozu dienen Funktionen?
Pfeil 9.3 Definition von Funktionen
Pfeil 9.4 Funktionsaufruf
Pfeil 9.5 Funktionsdeklaration
Pfeil 9.6 Lokale Variablen
Pfeil 9.7 Globale Variablen
Pfeil 9.8 Statische Variablen
Pfeil 9.9 Schlüsselwörter für Variablen – Speicherklassen
Pfeil 9.9.1 auto
Pfeil 9.9.2 extern
Pfeil 9.9.3 register
Pfeil 9.9.4 static
Pfeil 9.10 Typ-Qualifizierer
Pfeil 9.10.1 volatile
Pfeil 9.10.2 const
Pfeil 9.11 Geltungsbereich von Variablen
Pfeil 9.12 Speicherklassen-Spezifizierer für Funktionen
Pfeil 9.12.1 extern
Pfeil 9.12.2 static
Pfeil 9.12.3 volatile
Pfeil 9.13 Datenaustausch zwischen Funktionen
Pfeil 9.14 Wertübergabe an Funktionen (call-by-value)
Pfeil 9.15 Der Rückgabewert von Funktionen
Pfeil 9.16 Die Hauptfunktion »main()«
Pfeil 9.17 Rückgabewert beim Beenden eines Programms
Pfeil 9.17.1 Programmende auswerten
Pfeil 9.18 Funktionen der Laufzeitbibliothek
Pfeil 9.19 Getrenntes Kompilieren von Quelldateien
Pfeil 9.20 Rekursive Funktionen (Rekursion)
Pfeil 9.20.1 Exkurs: Stack
Pfeil 9.20.2 Rekursionen und der Stack
Pfeil 9.20.3 Fakultät
Pfeil 9.20.4 Fibonacci-Zahlen
Pfeil 9.20.5 Größter gemeinsamer Teiler (GGT)
Pfeil 9.21 »inline«-Funktionen


Rheinwerk Computing - Zum Seitenanfang

9.19 Getrenntes Kompilieren von Quelldateien topZur vorigen Überschrift

Für kleinere Programme, deren kompletter Quelltext in einer Datei geschrieben wurde, können Sie beim Kompilieren weiterhin wie bisher verfahren. Bei zunehmend größeren Programmen könnten jedoch folgende Probleme auftreten:

  • Das Editieren und das Kompilieren dauern länger.
  • Der Quelltext wird unübersichtlich und schwieriger zu verstehen.
  • Teamarbeit wird erschwert.

Ich werde dieses Beispiel anhand des GNU-Compilers gcc demonstrieren. Mit anderen Compilern dürfte dieser Vorgang ähnlich ablaufen. Bei Entwicklungsumgebungen müssen Sie dabei ein neues Projekt anlegen und die einzelnen Quelldateien zum Projekt hinzufügen. Im Folgenden sehen Sie ein Beispiel zum getrennten Kompilieren mit drei Programm-Modulen, die zu Demonstrationszwecken sehr kurz gehalten sind:

/*main.c*/
#include <stdio.h>
#include <stdlib.h>

extern void modul1(void);
extern void modul2(void);

int main(void) {
   modul1();
   modul2();
   return EXIT_SUCCESS;
}

/*modul1.c*/
void modul1(void) {
   printf("Ich bin das Modul 1\n");
}


/*modul2.c*/
void modul2(void) {
   printf("Ich bin Modul 2\n");
}

Jetzt haben Sie drei Dateien, die zusammen kompiliert und gelinkt werden müssen. Zuerst wird dazu der Schalter -c verwendet. Das bewirkt, dass die einzelnen Dateien zwar übersetzt werden, der Linkerlauf dabei aber nicht gestartet wird:

gcc -c main.c
gcc -c modul1.c
gcc -c modul2.c

Jetzt befinden sich drei Objektdateien (*.obj oder *.o) im Verzeichnis, in dem kompiliert wurde. Diese drei Objektdateien können Sie mit folgender Anweisung zu einer ausführbaren Datei linken:

gcc main.o modul1.o modul2.o

Jetzt befindet sich im Verzeichnis die Datei a.out. Dies ist die ausführbare Datei, das fertige Programm. Der Name a.out wird standardmäßig vom Compiler verwendet. Mit dem Schalter -o können Sie auch einen eigenen Namen vorgeben:

gcc -o myapp main.o modul1.o modul2.o

Sollten Sie gcc unter Windows verwenden, fügen Sie beim Programmnamen myapp die Extension *.exe hinzu (myapp.exe). Wenn Sie jetzt die Datei main.c ändern müssen, brauchen Sie nur diese neu zu übersetzen:

gcc -c main.c

und können anschließend die einzelnen Dateien wieder zusammenlinken:

gcc main.o modul1.o modul2.o

Das nochmalige Kompilieren der anderen Dateien entfällt, da deren Code nicht geändert wurde und deshalb die unveränderten *.o-Dateien neu verlinkt werden können. Bei großen und sehr großen Projekten führt dieses Vorgehen zu deutlich kürzeren Kompilierzeiten.

Natürlich versteht es sich von selbst, dass sich in einer der Dateien die main()-Funktion befinden muss. Abbildung 9.4 zeigt den ganzen Vorgang noch einmal grafisch.

Abbildung 9.4 Übersetzen mehrerer Quelldateien


Hinweis

In der Praxis wird gewöhnlich dieser Vorgang komfortabel in ein Makefile verpackt und mit make übersetzt (gebaut).




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: C/C++






 C/C++


Zum Katalog: Einstieg in C






 Einstieg in C


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de