sizeof mit stringliste ?

Gast #181581
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
ÄÄÄÄÄ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 #181585
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren