const char aa[] PROGMEM = "xyz"; gibt warnung: ../Frogga.c:107: warning: `__progmem__' attribute ignored Warum?
Kontext? Ich könnte mir vorstellen, dass du das mit einer Variable der storage class "auto" versucht hast, das kann nicht funktionieren.
Kontext??
void foo(void)
{
const char aa[] PROGMEM = "xyz";
}
Das ist eine ganz normale Funktion. "Auto" habe ich explizit nichts
gemacht.
Gast
#366982
Lokale Variablen sind natürlich per Default auto.
Gast
#366983
Das ist aber eine Variable der storage class "auto" - die wird auf dem Stack angelegt. Das passiert mit jeder nichtstatischen Variablen, die innerhalb eines Blockes angelegt wird. Und damit geht PROGMEM nicht. Wie auch, der Stack liegt ja nicht im Flash ...
Ah. Also static const char array[] PROGMEM = "KungFu";
Rein theoretisch müsste es doch funktionieren, die Variable außerhalb einer Funktion anzulegen. Natürlich gilt sie dann über das gesamte Programm. PS: Statische Variablen behalten doch ihren Wert.. Selbst wenn die Funktion, in der sie angelegt werden, endet.
Gast
#366986
Nicht nur theoretisch. Nichtautomatische Variablen (statische innerhalb eines Blockes) oder globale innerhalb eines Modules (statische außerhalb jedes Blockes) oder globale auch über mehrere Module (als Linkersymbol sichtbar) funktionieren alle gleichermaßen mit progmem.
Ich danke für die Bestätigung!