Konstanten definieren

Die nächste Verwendung des Präprozessors ist die Definition von Konstanten, sogenannten Präprozessorsymbolen. Sie werden mit dem Befehl #define definiert. Um z.B. eine Obergrenze für Schleifen festzulegen kann man den Befehl

  #define MAXLOOP 10000

nutzen. Dabei ist es üblich, den Namen der Symbole durchweg groß zu schreiben, um ihn von Variablen und Konstanten des Compilers abzugrenzen - zwingend nötig ist es allerdings nicht. Häufig werden die Namen mit Unterstrichen versehen, um weitere Sicherheit vor Verwechslungen zu haben. Es ist nicht nötig, einem solchen Symbol auch einen Wert zuzuweisen, auch eine Definition ohne Wert kann Sinn machen, da abgefragt werden kann, ob ein Symbol definiert ist oder nicht. Dazu existiert auch ein Befehl, um Definitionen zurückzusetzen: #undef, der aber eher selten Verwendung findet.

Solche Symbole können i.d.R. auch beim Aufruf des Compilers übergeben werden, dies wird z.B. im Zusammenhang mit bedingter Compilierung interessant, doch dazu später mehr.

Hier ist es wichtig, zu bedenken, daß der Präprozessor diese Symbole rein textuell ersetzt. Daher sollten die Namen so gewählt werden, daß keine Konflikte entstehen, da sonst der Präprozessor Fehler in den Code einbaut. Dieses Problem taucht aber nur auf, wenn auch eine Ersetzung gemacht werden soll - falls ein Symbol keinen Wert hat wird es nicht ersetzt. Es werden dabei keine Teilworte ersetzt und Kommentare werden ignoriert - was interessant ist, falls man nur den Präprozessor laufen läßt. Folgendes Codefragment ist aber fehlerhaft:

  #define I 10
 
  int I = 20; //wird zu int 10=20;