Macro
Ein Makro expandiert Code zur Kompilierzeit und ermöglicht Metaprogrammierung: Code, der Code erzeugt, womit Duplikation und Boilerplate vermieden werden.
Zweck
Codetransformation zur Kompilierzeit, die Boilerplate beseitigt und DSLs implementiert.
Mechanismus
C-Makros: textuelle Ersetzung (Präprozessor). Rust-Makros: hygienische Makros mit AST-Expansion. Lisp-Makros: Code als Daten. JS: Tagged Template Literals. Makros sind flexibler als Funktionen, aber schwerer zu debuggen — mit Bedacht einsetzen.
Anwendungsfälle
- Codegenerierung
- DSL-Konstruktion
- Boilerplate-Beseitigung