Super, Jomelo.
Eine Frage zum Verständnis:
Du erzeugst Objekte vom Typ Menu, arbeitest aber meist mit den char* auf deren Texte. Hat das einen Grund ?
Falls der gleiche Text in verschiedenen Menu Objekten (z.B. auf verschiedenen Ebenen oder in verschiedenen Zweigen) auftaucht, bist du sicher, dass die zwei #define Anweisungen zwei unterschiedliche char* adressieren?
#define _LANG_MENU_setting1_2 "Einstellungen"
#define _LANG_MENU_setting3_2 "Einstellungen"
Menu Item1_2 (_LANG_MENU_setting1_2);
Menu Item3_2 (_LANG_MENU_setting3_2);
char * tmp = _LANG_MENU_setting1_2; // z.B.
if (tmp == _LANG_MENU_setting3_2 ) {
// eine sicher nicht gewollte eventuelle Optimierung des Compilers
// wenn man hier landet
}
Für Uno (oder noch kleinere Arduinos), oder wenn der Arduino neben der Menu System Bedienung nebenbei noch möglichst viele dynamische Daten zwischenspeichern soll und/oder einen ganzen SD card block im RAM halten soll, oder ...,
... wäre es noch superer, wenn die konstanten Menü-Texte aus dem Flash genommen würden ...