Makros und symbolische Konstanten
Du möchtest wissen, was symbolische Konstanten und Makros sind? Im folgenden Beitrag erklären wir dir, wann man diese beiden verwenden kann.
Inhaltsübersicht
C Makro und symbolische Konstante einfach erklärt
Symbolische Konstanten werden in etwa so vereinbart:
#define CONST BSP
Doch was nutzen sie dir jetzt? Symbolische Konstanten werden bereits durch den Präprozessor verarbeitet. Deswegen kann dieser an allen Stellen, an denen deine Konstante CONST vorkommt, sie durch den Wert BSP ersetzen. Dadurch wird es einfacher für dich unhandliche Werte wie π zu verarbeiten, da du sie nur einmal ausschreiben musst. Außerdem kannst du mit dieser Methode auch schnell Anpassungen vornehmen.
Beispiel und wichtige Hinweise
Stell dir zum Beispiel vor, du würdest wirklich in einem Programm verwenden und es kommt in mehreren Funktionen vor. Nun hast du das Problem, dass dein Programm durch zu ungenaue Ergebnisse Fehler auswirft. Wenn du hart codiert verwendet hast, musst du nun jede einzelne Nutzung des Wertes anpassen. Ganz anders ist es, wenn du als symbolische Konstante definiert hast. Dann kannst du einfach die Vereinbarung ganz oben in deinem Quellcode um die gewünschte Zahl an Nachkommastellen erweitern und schon ist dein Problem behoben.
Um diese kleinen Helfer allerdings nutzen zu können, musst du einige Dinge beachten. Zum einen musst du immer Großbuchstaben für die Namen deiner Konstanten verwenden. Dadurch kannst du sie von Variablen und Funktionen gleich auf den ersten Blick unterscheiden. Außerdem ist es noch wichtig, dass du nur lesbare Namen verwendest, da sonst hinterher niemand mehr weiß, wofür diese Konstante überhaupt steht.
Makro C
Der große Bruder einer symbolischen Konstante ist ein Makro. Diese werden so vereinbart:
#define M (p1,…,pn)
Sie unterscheiden sich von symbolischen Konstanten, indem sie Parameter haben. Jedoch ersetzen sie Erwähnungen ihres Namens auf dieselbe Weise. Deswegen werden sie ebenfalls durch den Präprozessor verarbeitet.
Im Allgemeinen ersetzen Makros aber keine Werte, sondern kleine Funktionen. Demensprechend könnte eine Makro-Vereinbarung etwa so aussehen:
#define BSP(parameter) (parameter+5)
Wenn das nun über einem Programm wie diesem hier steht, erhalten wir als Ausgabe 10. Das liegt daran, dass der Präprozessor diesen Teil durch unser Makro ersetzt.
Praktisch ist dieses Ersetzen von Funktionen vor allem dann, wenn bestimmte kleinere Operationen, zum Beispiel die Berechnung eines Minimums, sehr oft durchgeführt werden müssen. Es hilft dir dabei, deinen Code leicht anpassbar und vor allem übersichtlich zu halten.
Jetzt wo du weißt, was Makros und symbolische Konstanten sind, sollten deine Programme schon ganz anders aussehen.