Der Präprozessor

C ist eine weitgehend plattformunabhängige Sprache. Leider gibt es immer wieder Probleme, z.B. einen Quelltext, der für Unix geschrieben wurde, unter Windows zu kompilieren. Oft kommt es sogar vor, dass ein Programm, welches z.B. mit Hilfe von gcc kompiliert wurde, nicht fehlerfrei von einem Borland-Compiler übersetzt werden kann.

In diesem Fall kann der Präprozessor helfen.

Es handelt sich dabei um ein Programm, welches vor dem Kompiliervorgang ausgeführt wird.

Wir haben den Präprozessor bereits mehr oder weniger unbewusst genutzt. Und zwar beim Einbinden von Headerdateien:

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>

C verfügt über eine ziemlich kleine Syntax. Funktionen wie printf() oder fgetc() gehören nicht dazu. Das sind Funktionen, die später lediglich dem Programm hinzugefügt wurden.

Der Präprozessor fügt vor dem Kompiliervorgang die Inhalte der Headerdateien in den Quelltext ein. Dabei sucht er im Verzeichnis der Standardbibliotheken nach der entsprechenden Datei.

Jeder Befehl, der mit einem Rautezeichen(#) beginnt, ist für den Präprozessor bestimmt. Diese Art von Befehl wird auch Präprozessordirektive genannt. Diese Präprozessordirektiven gehören auch nicht zur C-Syntax, sondern werden vom Präprozessor entfernt, noch bevor der C-Compiler den Quelltext erhält. Der Präprozessor kann nur Codeteile einfügen, ersetzen oder entfernen. Vor allem die Möglichkeit, Teile zu entfernen, hilft C für unterschiedliche Teile portabel zu halten: Man schreibt nicht portable Parts für jedes System und lässt die Teile für andere Systeme beim Kompilieren weg.

Da es den Präprozessor nur in wenigen Programmiersprachen gibt, nutzen ihn manche Programmierer auch für andere Sprachen.