Forum: Mikrocontroller und Digitale Elektronik Flexible Menüstruktur und Initialisierung (in C)?


von Erik (Gast)


Lesenswert?

Es gibt zwar schon einige Threads zum Thema Menüstruktur, z.B. 
Beitrag "Programmieren einer Menüstruktur in C" oder der Rat, mal in die 
Quellen vom AVR Butterfly zu schauen 
(http://ww1.microchip.com/downloads/en/DeviceDoc/AVRButterfly_application_rev07.zip).

Ich suche aber einen Ansatz, um die Struktur des Menüs flexibel zu 
gestalten, d.h. optionale Einträge/Elemente in Abhängigkeit von 
(Software-)Modulen zu haben.

Beispiel:
1
Funktionen
2
Einstellungen
3
  Display
4
    Kontrast
5
    Helligkeit
6
    Anzeigedauer
7
[
8
  Audio
9
    Ein
10
    Frequenz
11
    Lautstärke
12
]
13
  LetzteEinstellung
14
LetzterMenüEintrag

D.h. möglichst getrennt vom Hauptprogramm (und möglichst ohne #ifdefs), 
soll im optionalen Modul "Audio" das Menü erweitert werden (vor 
LetzteEinstellung, d.h. Einfügen).
Geht sowas irgendwie statisch (und constant)? Mir fällt nichts ein, denn 
es müssten Indizes für die Menüeinträge bzw. die Verkettung vom 
Präprozessor beeinflusst werden.

Oder muss die Struktur dafür dynamisch initialisiert und ggf. verändert 
werden, also etwas wie
1
Menu_init();
2
3
// und im Modul dann etwa
4
5
Menu_append(AUDIO, SETTINGS);

Der Nachteil ist dann wohl, dass nicht mehr alle structs "auf einen 
Schlag" initialisiert werden können, und es stattdessen einige 
Funktionsaufrufe geben muss, obwohl alle Daten eigentlich const sein 
könnten.

Oder kann man Variablen irgendwie re-initialisieren, um z.B. einen 
next-Zeiger in der "Display"-Menüeintrags-Struktur auf AUDIO 
"umzuhängen" (und den in AUDIO auf LetzteEinstellung?

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
Noch kein Account? Hier anmelden.