C Handbuch bestellen

Das C Tutorial (deutsch)

Präprozessor

Dateien einbinden

Bei größeren Programmen ist es aus Gründen der Übersichtlichkeit sinnvoll, den Quelltext in mehrere Dateien aufzuteilen. Meistens werden die Unter-Funktionen in separate Dateien - sogenannte Header-Dateien - ausgegliedert. In dem Hauptprogramm, also die Quelltext-Datei mit der main-Funktion, werden die Quelltext-Dateien mit der Präprozessor-Anweisung #include eingebunden. Hier wird der Dateiname der Quelltext-Datei in Hochkommas " gesetzt.

In diesem Beispiel wurden die Funktionen mult zum Multiplizieren und add zum Addieren in einer Header-Datei namens funktionen.h ausgegliedert. Die Hauptprogramm-Datei beispiel.c bindet die Datei funktionen.c über die #include-Anweisung ein.

/* Datei beispiel.c */

#include<stdio.h>
#include "funktionen.h"

int main() {
	printf("Produkt: %d\n", mult(4, 5));
	printf("Summe: %d\n", add(4, 5));
	return 0;
}
/* Datei funktionen.h */

int mult(int a, int b) {
	return a * b;
}

int add(int a, int b) {
	return a + b;
}
Produkt: 20
Summe: 9

Mehrfacheinbindung vermeiden

Bei größeren Projekten könnte es unter Umständen vorkommen, dass man versucht, Header-Dateien mehrmals einzubinden. Diese Fehlerquelle kann man mit der bedingten Kompilierung vorzubeugen. Hierbei wird der Quelltext der Header-Datei nur ausgewertet, wenn eine symbolische Konstante in der Header-Datei nocht nicht definiert wurde. Bei der Abarbeitung der Header-Datei wird diese symbolische Konstante definiert. Beim zweiten Versuch, die Header-Datei auszuwerten, ist die Bedingung zur Auswertung nicht mehr wahr. Der Name der symbolischen Konstanten richtet sich nach dem Namen der Header-Datei, wobei der Punkt durch einen Unterstrich ersetzt wird.

/* Datei funktionen.h */

#ifndef FUNKTIONEN_H
#define FUNKTIONEN_H

int mult(int a, int b) {
	return a * b;
}

int add(int a, int b) {
	return a + b;
}
#endif