Suche
Suche Menü

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.h ü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 noch 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