Ich verwende als Vorlage für ein Menü: Beitrag "LCD - Menu". Meine Frage ist folgende: gibt es einen eleganteren Weg in der exec-Fkt die Menüpunkte zu unterscheiden, als in der Struktur eine eindeutiges int Feld mittels enum anzulegen und später in der exec per switch case Aktionen zu starten? Meine ursprügnliche Idee war: die Strukturen liegen im RAM und haben versch. Adressen. Der Compiler meckert aber wenn ich die Adresse der Struktur als switch Element verwenden möchte. Gibt evtl. eine Mögl. in der Richtung?
Wenn du uns keinen Sourcecode zeigst, dann können wir schlecht sagen, was falsch ist. MfG Marius
Im Anhang die main.c. Schaut euch da die exec_menu an, es gibt da 2. Varianten eine mit einer extra ID (die nehm ich zur Not) und eine andere, die der Compiler nicht zulässt. Vielleicht kennt jemand eine elegantere Lösung.
Zitat aus dem Code:
> //hier war meine Idee über switch(current) zu unterscheiden
Zur Not kann man den Pointer auch nach int casten. Du könntest statt Deiner extra ID aber auch einen Funktionspointer in Deine Struktur mit einbauen und darüber in exec_menu direkt die passende Funktion aufrufen. Dann sparst Du Dir das komplette Switch-Statement. (siehe Anhang) CU
fbi wrote: > Zur Not kann man den Pointer auch nach int casten. > Du könntest statt Deiner extra ID aber auch einen Funktionspointer in > Deine Struktur mit einbauen und darüber in exec_menu direkt die passende > Funktion aufrufen. Dann sparst Du Dir das komplette Switch-Statement. > (siehe Anhang) > > CU Ah, das ist ne gute Idee, THX
Mal ne Frage: Warum initialisierst du die Tabelle erst zu Laufzeit? Das ist doch extrem codehungrig.
Na weil ich die evtl. zur Laufzeit ändern möchte. Je nachdem ob die Menüpunkte benötigt werden oder nicht.
Das ist aber kein Grund. Wenn ein Menüpunkt nicht benötigt wird, dann wird der Code erstens dennoch gebraucht, und zweitests könntest du es nicht dynamisch nachladen (woher auch). Ergo: Alle Menüpunkte werden initialisiert und die aktiv geschaltet, die gebraucht werden bzw. ein Menue verweist nur auf die Menüpunkte, die gerade aktiv sind. Die Initialisierung macht man statisch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.