sizeof mit stringliste ?

Gast #181581
Tach,

ich habe eine "Stringliste" im flash stehen:

const char str_trinken[] PROGMEM = "trinken";
const char str_essen[] PROGMEM = "essen";
const char str_schlafen[] PROGMEM = "schlafen";

PGM_P strl_actions[] PROGMEM = {str_trinken, str_essen, str_schlafen};

Nun möchste ich wissen wieviele Elemente in strl_actions vorhanden sind
und habe dazu geschrieben:

count = sizeof(strl_actions) / sizeof(PGM_P);

Der Compiler motzt aber über das Konstrukt:

eventlist.c:124: error: invalid application of `sizeof' to incomplete
type `({anonymous})'

(gemeint ist das erste sizeof)

Wie krieg ich die Anzahl der Elemente heraus ?

MfG Stefan
Gast #181582
So gehts, frag mich aber bitte nicht warum ?-)



PROGMEM char str_trinken[] = "trinken";
PROGMEM char str_essen[] = "essen";
PROGMEM char str_schlafen[] = "schlafen";

PGM_P strl_actions[] PROGMEM = { str_trinken, str_essen, str_schlafen
};

const int count PROGMEM = sizeof(strl_actions)/sizeof(PGM_P);
Gast #181583
ÄÄÄÄÄhh

Dein code geht auch, die zuweisung zu count muss nur die komplette
information über strl_actions haben.

Wenn der compiler nur über ein Headerfile erfährt dass
strl_actions ein array von zeigern ist, weiss ernatürlich nicht wie
groß dann die strl_actions (im c-file) wirklich ist. Das müsste der
linker auflösen, und das kann meines wissens kein einziger linker.
Gast #181584
> Das müsste der linker auflösen, und das kann meines wissens kein
> einziger linker.

Er dürfte es auch gar nicht (dem C-Standard nach) (afaik).
Gast #181585
Danke !!

Jo, jetzt fällts mir wie Schuppen aus den Nasenhaaren.... richtig, die
Liste wurde über ein Headerfile eingebunden, da weis dann der Compiler
natürlich nicht wie groß der Apparat ist, nur der Linker...

Problem gelöst, nochmal Danke,

Stefan

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.