Embedded-Entwicklung: C++-Metaprogrammierung mit Templates

Mit C++-Templates lassen sich Lookup-Tabellen komfortabel und ohne Overhead für das resultierende Binary zur Compile-Zeit erzeugen.

Lesezeit: 5 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen
Von
  • Dirk Petrautzki
Inhaltsverzeichnis

Seit jeher setzen Programme statische Tabellen immer dann ein, wenn sie zur Laufzeit anhand eines Eingangswerts einen Ausgangswert nachschlagen sollen. Diese meist als LUT (Look-up Tables) bezeichneten Tabellen sind vielfältig einsetzbar. Sie erlauben es insbesondere, komplexe Berechnungen zur Programmlaufzeit durch eine – in der Regel wesentlich schnellere – Wertsuche zu ersetzen. Gerade bei der Programmierung von Mikrocontrollern mit begrenzter Rechenleistung spielt die Zeitersparnis eine wichtige Rolle.

Statt diese Tabellen beispielsweise mit einem Tabellenkalkulationsprogramm zu berechnen und anschließend händisch in den Programmcode zu übertragen, kann man in C++ die Metaprogrammierung unter Zuhilfenahme von Templates nutzen und diese Tabellen zur Compile-Zeit generieren lassen. Ein nachträgliches Verändern einer Tabelle gestaltet sich insofern äußerst einfach, als dies durch ein simples Ändern der Berechnung oder das Anpassen von Konstanten geschieht.

Mehr zur Programmiersprache C++

Seit C++17 lassen sich solche Tabellen kompakter und verständlicher als zuvor erstellen. Allerdings hinken viele Entwicklungsumgebungen für Mikrocontroller respektive ihre Compiler und ihre Standardbibliothek hinterher und bieten noch keine Möglichkeit, C++17-konformen Code zu schreiben. Deshalb zeigt dieser Artikel, wie das Erstellen der LUT mit den Mitteln der Standards von C++17 bis herunter zu C++98 gelingt.

Immer mehr Wissen. Das digitale Abo für IT und Technik.

  • Zugriff auf alle Inhalte von heise+
  • exklusive Tests, Ratgeber & Hintergründe: unabhängig, kritisch fundiert
  • c't, iX, Technology Review, Mac & i, Make, c't Fotografie direkt im Browser lesen
  • einmal anmelden – auf allen Geräten lesen - monatlich kündbar
  • erster Monat gratis, danach monatlich 12,95 €
  • Wöchentlicher Newsletter mit persönlichen Leseempfehlungen des Chefredakteurs
GRATIS-Monat beginnen Jetzt GRATIS-Monat beginnen Mehr Informationen zu heise+