Forum: Compiler & IDEs Frage zum Code


von Alexander (Gast)


Lesenswert?

Hi, ich guck mir grad ein paar Beispielprogramme an und hab ne Frage 
dazu:

__flash unsigned int LCD_character_table[] = ......


Was bedeutet das "__flash" und was bedeutet allgemein das "__", weil ich 
das öfters gesehen habe.

Danke

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Alexander wrote:

> Was bedeutet das "__flash"

Der Code stammt von einem nicht-GCC-Compiler, der damit sehr
wahrscheinlich das entsprechende Objekt im Flash-ROM statt im RAM
ablegt.

> und was bedeutet allgemein das "__", weil ich
> das öfters gesehen habe.

Es leitet einen Bezeichner ein, der garantiert "reserved for the
implementation" ist, d.h. er ist für Zwecke des Compilers oder der
Systembibliothek vorbehalten (die dann ihrerseits dokumentieren muss,
wann und wie eine Applikation ggf. von diesen Symbolen zu welchem
Zweck Gebrauch machen kann).

von Alexander (Gast)


Lesenswert?

Ich könnte das aber bei einem, daran angelehnten Programm ignorieren und 
das entsprechende Feld einfach normal mit "unsigned int 
LCD_character_table[] = ......" initialisieren, oder muss ich dann noch 
etwas besonderes beachten?
Ich denke, der erhöhte Speicherbedarf macht nichts aus. (Mega169)

von Michael Wilhelm (Gast)


Lesenswert?

Das sieht aus wie IAR Compiler. Das __flash bedeutet, dass die Daten im 
Flash gespeichert werden. Wenn du es "normal" initialisierst, bleiben 
die Daten im RAM.

MW

von Uwe M. (lifthrasil)


Lesenswert?

Noch vollständigkeits halber ... das ganze würde mit GCC so aussehen:
1
int myData[] PROGMEM = ...
oder
1
int myData[] __attribute__((progmem)) = ...

Gruß Uwe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.