Archiv verlassen und diese Seite im Standarddesign anzeigen : 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!!!
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.
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.
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. 8-[
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 ;-)
thewulf00
27.11.2007, 08:49
Mach keine Umwege, mach es direkt:
taste *pro[] EEMEM = {&T1, &T2};
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)????
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.