mikrocontroller.net

Forum: Compiler & IDEs struct


Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
struct { ... } eeprom_menu eeprom_data = { 1, 2, 3 };

GCC versteht C99, Du kannst also auch sowas wie

... = { .menue1 = ... , .menue3 = ... };

schreiben.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

muß dem GCC aber auch mitteilen das er C99 verstehen soll.

Matthias

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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. ;-)

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten morgen an alle,
danke für die hilfe
  gruss
   jack

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.