Hallo, nahcdem ich nun einige Zeit mit dem Menu rumexperimentiert habe, verzweile ich im Moment etwas am gcc - oder an mir. Wieso ist bei dem beigefügten Code diese Fehlermeldung sinnvoll? IMHO ist das alles doch const. Code im Anhang! Compiling: menu_neu.c avr-gcc -c -mmcu=atmega16 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=menu_neu.lst -std=gnu99 -Wp,-M,-MP,-MT,menu_neu.o,-MF,.dep/menu_neu.o.d -g menu_neu.c -o menu_neu.o menu_neu.c:45: error: initializer element is not constant menu_neu.c:45: error: (near initialization for `menus[0]') menu_neu.c:46: error: initializer element is not constant menu_neu.c:46: error: (near initialization for `menus[1]') menu_neu.c:47: error: initializer element is not constant menu_neu.c:47: error: (near initialization for `menus[2]') menu_neu.c:48: error: initializer element is not constant menu_neu.c:48: error: (near initialization for `menus[3]') menu_neu.c:49: error: initializer element is not constant menu_neu.c:49: error: (near initialization for `menus[4]') menu_neu.c:50: error: initializer element is not constant menu_neu.c:50: error: (near initialization for `menus[5]') menu_neu.c:51: error: initializer element is not constant menu_neu.c:51: error: (near initialization for `menus[6]') menu_neu.c:52: error: initializer element is not constant menu_neu.c:52: error: (near initialization for `menus[7]') menu_neu.c:53: error: initializer element is not constant menu_neu.c:53: error: (near initialization for `menus[8]') menu_neu.c:54: error: initializer element is not constant menu_neu.c:54: error: (near initialization for `menus[9]') menu_neu.c:55: error: initializer element is not constant menu_neu.c:55: error: (near initialization for `menus[10]') menu_neu.c:56: error: initializer element is not constant menu_neu.c:56: error: (near initialization for `menus[11]') menu_neu.c:58: error: initializer element is not constant menu_neu.c:58: error: (near initialization for `menus[12]') make.exe: *** [menu_neu.o] Error 1
Weil die Deklarationen der referenzierten Objekte (Hauptmenue etc.) nur in einem Kommentar stehen. Außerdem ist Dein menuename[] Array so nicht sehr sinnvoll: Du hast das Array selbst im Progmem, die Strings, die drinstehen aber nicht. Siehe (avr-libc) FAQ.
Hallo Jörg, erstmal Danke für den Tip mit den Strings, hatte da wohl eine Kleinigkeit vergessen. Selbst wenn ich folgendes in das Headerfile schreibe und somit die Deklaration in einem abhacke, passsiert das gleiche, wie oben. Dem gcc ist das immer noch nicht const genug - und ich verzweifel!! Gruß Marcus PS: Liegt dieses Menü wirklich im Flash? Ich bin mir da nicht soo sicher.
Marcus, Ich weiß nicht, ob es damit zusammenhängt, aber brauchst Du denn 'const static ...' oder reicht auch 'const ...' alleine aus? (Ich kann mir das mit dem static einfach nicht merken) Ja, das array menuname liegt wirklich im flash. Aber nur das array mit den pointern zu den Strings. Die Strings selber liegen im RAM. Siehe FAQ. Volkmar
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.