Moin.

Kleines Problem: In einer .h-Datei liegt ein Array im Flash:

const stc_menuitem_extdV2 menuitems[] PROGMEM = {
// nen haufen Daten
};

Bisher wurde dieses Array nur von einer main.c-Datei verwendet, in dem halt die betreffende menuitems.h-Datei includiert wurde. Hat soweit auch funktioniert.

Nun wird dieser Array jedoch von mehreren .c-Dateien benötigt (main.c, keys.c). Der Schritt, hier die menuitems.h zu includen, bringt jedoch den Fehler "multiple definition of 'menuitems'".

Nun war meine Idee, das ganze wie mit "normalen" Variablen zu machen, d.h. ich werf den Array in menuitems.c, setze in die menuitems.h eine extern-Deklaration und binde die Datei so ein.
Klappt ja mit normalen Variablen im RAM wunderbar.

"extern const stc_menuitem_extdV2 menuitems[] PROGMEM;"
klappt jedoch nicht so ganz, da z.B. in der keys.c in einer Funktion mit einer for-Schleife selbige bemängelt wird:

for (ui16_t MenuCnt = 0 ; MenuCnt < sizeof (menuitems) / sizeof (stc_menuitem_extd) ; MenuCnt++)
{
}

Fehler: invalid application of 'sizeof' to incomplete type 'const struct stc_menuitem_extdV2[]'

Wie müsste hier die extern-Deklaration für eine PROGMEM-"Variable" aussehen?

mfG