Konstante Ausdrücke in C erkennen: Ein makrobasierter Ansatz

2025-05-13

Dieser Artikel untersucht verschiedene Methoden zum Erstellen eines C-Makros, das prüft, ob ein Ausdruck eine Konstante zur Kompilierzeit ist. Der Autor untersucht Ansätze mit `constexpr` und `typeof` aus C23, GNU-Erweiterungen wie `__builtin_constant_p`, `static_assert` aus C11 und clevere Tricks mit `sizeof` und Compound Literals. Jede Methode hat ihre Vor- und Nachteile; einige benötigen neuere C-Standards, verlassen sich auf Compiler-Erweiterungen oder können den Typ des Ausdrucks ändern oder Warnungen erzeugen. Der Artikel fasst die Vor- und Nachteile zusammen und drückt den Wunsch nach eleganteren Lösungen aus.