-
-
Neuer Benutzer
Öfters hier
Array aus struct
Hallo, ich habe folgende Frage:
Ich habe mit typedef ein struct deklariert. Diese möchte ich im EEPROM oder Flash speichern (wo ist im Prinzip egal). Das fkt. auch alles. Jetzt brauche ich aber mehrere Array´s die aus diesen (verschiedenen) struct´s bestehen. Kann ich diese dann ebenfalls im EEPROM oder Flash speichern? Mein C-Buch hilft da jetzt nicht wirklich weiter. Schon mal vielen Dank im voraus!!!
-
Erfahrener Benutzer
Roboter Experte
Kommt nur drauf an, wieviel Speicherplatz dein struct braucht. Und auch darauf, wieviele wiegroße array du da reinpacken willst. Das musst du selbst wissen. Ansonsten geht das sicherlich.
-
Neuer Benutzer
Öfters hier
Hallo, wenn ich es wie folgt schreibe :
typedef struct {char adress1; char pin1; char adress2; char pin2;} taste;
taste T1 EEMEM = {0x72, 1, 0x74, 3};
taste T2 EEMEM = {0x72, 2, 0x74, 4};
taste *T13 EEMEM = &T1;
taste *T14 EEMEM = &T2;
taste *pro[] EEMEM = {&T13, &T14};
kommt die Fehlermeldung :
main.c:12: warning: initialization from incompatible pointer type
WARUM???
-
Ganz einfach:
taste *pro[] EEMEM = {&T13, &T14};
ist falsch, denn T13 und T14 sind ja schon Zeiger, also muss es
taste *pro[] EEMEM = {T13, T14};
heissen.
-
Neuer Benutzer
Öfters hier
Wenn ich´s, so wie ReSeT beschrieben hat, ändere kommt :
error : initializer element is not constant
error : (near initialization for 'pro[0]')
error : initializer element is not constant
error : (near initialization for 'pro[1]')
auch wenn ich alles mit 'const' deklariere.
Wenn ich aber 'taste *pro ={etc.}' in einer Funktion deklariere funktionierts --> aber dann kann ich´s halt nicht im EEPROM speichern.
-
Öhmja, ich sollte vielleicht dazusagen, daß ich's mit ANSI-C unter GCC auf der PC Konsole getestet hab. Möglicherweise unterscheidet sich hier die AVR Implementierung.
-
Erfahrener Benutzer
Roboter Experte
Dann kanns doch nicht gehen. Das mit dem EEPROM dürfte wohl eine Spezialität des avr-gcc sein und wird auf einem normalen PC nicht gehen.
Probiers mal mit dem avr-gcc aus
-
Erfahrener Benutzer
Roboter Genie
Mach keine Umwege, mach es direkt:
taste *pro[] EEMEM = {&T1, &T2};
-
Neuer Benutzer
Öfters hier
Also, so funktioniert´s, super und vielen Dank!
Jetzt hab ich nur noch eine Frage zum Schluss: Hab ich jetzt nicht je 2x T1 und T2 (einmal als Zeiger und einmal als struct)????
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen