www.mikrocontroller.net

Forum: Compiler & IDEs progmem attribut


Autor: Gernot Frisch (gernotfrisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
const char aa[] PROGMEM = "xyz";

gibt warnung:
../Frogga.c:107: warning: `__progmem__' attribute ignored

Warum?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontext?

Ich könnte mir vorstellen, dass du das mit einer Variable der
storage class "auto" versucht hast, das kann nicht funktionieren.

Autor: Gernot Frisch (gernotfrisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kontext??

void foo(void)
{
 const char aa[] PROGMEM = "xyz";
}

Das ist eine ganz normale Funktion. "Auto" habe ich explizit nichts
gemacht.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lokale Variablen sind natürlich per Default auto.

Autor: Die meisten Elche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: Gernot Frisch (gernotfrisch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah. Also
static const char array[] PROGMEM = "KungFu";

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Die meisten Elche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich danke für die Bestätigung!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.