Was ist Makro?

Mit #define benannte Textersetzung in C. Es gibt Namen für Konstanten wie #define BUF_SIZE 64 und funktionsartige Makros mit Argumenten wie #define SQUARE(x) ((x) * (x)); expandiert werden sie vor der Kompilierung durch den Präprozessor. Da die Expansion nur eine Textersetzung ist, ergibt sich ohne Klammern um die Argumente und den gesamten Ausdruck wegen der Operatorpriorität ein anderer Ausdruck als beabsichtigt, und Argumente mit Nebeneffekten wie SQUARE(i++) werden mehrfach ausgewertet.

Japanische Bezeichnung: マクロ

„Makro“ kommt in 2 Übungsfragen aus 1 Themen vor, z. B. Grundlagen der Programmiersprache C.

Fachgebiet: Grundlagen der Programmiersprache C

„Makro“ in den Erläuterungen

Fragen mit „Makro“ (2)

  1. Welche Ausgabe erzeugt der obige Code, der das mit #define definierte Makro SQUARE verwendet, bei der Ausführung?
  2. Der obige Code steht in der Funktion main. Welche Ausgabe erzeugt er bei der Ausführung?

Verwandte Begriffe

Präprozessor Argument Undefiniertes Verhalten (Undefined Behavior) Ausrichtung und Auffüllung (Alignment und Padding) Bitfeld Dangling Pointer (hängender Zeiger) Dynamische Speicherreservierung Funktionszeiger Integer-Promotion Pufferüberlauf (Buffer Overflow)

Zur Glossarübersicht