- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Array aus struct

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2007
    Beiträge
    5

    Array aus struct

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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!!!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    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.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2007
    Beiträge
    5
    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???

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    14.11.2005
    Beiträge
    57
    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.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2007
    Beiträge
    5
    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.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    14.11.2005
    Beiträge
    57
    Ö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.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    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

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Mach keine Umwege, mach es direkt:

    taste *pro[] EEMEM = {&T1, &T2};

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2007
    Beiträge
    5
    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
  •  

Solar Speicher und Akkus Tests