hallo, benötige hilfe bei einem struct im eeprom vom mega16 //EEPROM-Daten definieren #define eeprom_data _attribute_ ((section(".eeprom"))) struct { menue1 menue2 menue3 }eeprom_menue eeprom_data; wie ist es nun möglich werte dem struct zu übergeben, die von anfang an im eeprom liegen (initialisierung des eeprom) werte stehen im xxx.eep gruss jack
struct { ... } eeprom_menu eeprom_data = { 1, 2, 3 }; GCC versteht C99, Du kannst also auch sowas wie ... = { .menue1 = ... , .menue3 = ... }; schreiben.
Nö, gnu99 (C99 + GNU-Erweiterungen) ist der Default. Es ist sowohl der Default von GCC selbst (falls kein -std= angegeben ist) als auch die Voreinstellung des WinAVR-Makefile-Templates und damit auch von Mfile. Zu bemerken wäre noch, daß GCC den C99-Standard noch nicht vollständig implementiert, dazu gibt's auf der GCC-Webseite irgendwo einen Bericht über den aktuellen Stand. Dürfte aber im AVR-Umfeld (oder überhaupt im Microcontroller-Bereich) eher uninteressant sein.
Hmm, laut man page wäre -std=gnu89 der Default. Allerdings: $ cat foo.c struct { int i; const char *cp; } foobar = { .i = 42, }; $ avr-gcc -Wall -O -S foo.c $ Ich denke, daß eher die man page falsch ist als meine Behauptung. ;-)
Hi meine Info hatte ich aus der man-page. Und diese stimmt zumindest teilweise da der gcc for(int foo=0;foo<100;foo++) bar; ohne -std=c99 nicht schluckt. Matthias
Das ist in der Tat eigenwillig, ja. Dort beklagt er sich ausdrücklich über den fehlenden C99-Modus... Ah ja, benannte struct- Initialisierung kann er (seltsamerweise) auch im C89-Modus. Lediglich mit -pedantic bemerkt er: foo.c:5: warning: ISO C90 forbids specifying subobject to initialize
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.