Gäbe aber zumindest beim Compilieren ein Warningpillmuncher hat geschrieben: Stimmt. Aber mal angenommen, eine Funktion heißt "Zeitscheibe"? (Tipp: Buchstaben zählen )Code: Alles auswählen
struct funcmap { char name[10]; void (*func)(void); }; ... // define our mapping struct funcmap dispatch[CALLS] = { {"foo", foo}, {"bar", bar}, {"index", bar}, {"Zeitscheibe", Zeitscheibe} };
Müßte man also statt dem char-Array einen Zeiger auf ein solches nehmen und dann die Länge beim Anlegen dynamisch allocieren?
Stimmt! Da müßte man also irgend wie hashen, um die Zugriffszeit zu verbessern und näher an ein dict zu kommen. Ich sollte mir mal den C-Quellcode zum dict in Python angucken... vermutlich werde ich ihn wohl aber nicht durchschauenAußerdem ist die Suche nach der passenden Funktion O(n) (naja, bei drei oder vieren...). Nicht, dass dein Code irgendwie schlecht wäre, man programmiert halt so in C.
Klar. Ich wollte ja nur mal zeigen, dass es in C nicht unbedingt anders läuft. Letzteres scheint der OP ja super zu verstehen; evtl. hilft es ihm ja auf die Sprünge.Aber die Verwendung eines Python-dicts ist im Vergleich dazu die flexiblere, einfachere und fehlertolerantere Lösung, insbesondere deswegen, weil man dict nicht erst selber programmieren muss.