So ist es. Der Unterschied ist nur auf C-Typ Ebene und führt evtl zu
Warnings, mehr nicht. Ausser eben bei der Definition eines Typs, der
dann im FLASH angelegt wird bzw. Section .progmem.data. anstatt .data
oder .bss.
Johannes M. wrote:
> prog_char ist kein Attribut, sondern ein mittels typedef definierter
> Datentyp, der das Attribut PROGMEM enthält.
>
1 | > typedef char PROGMEM prog_char;
|
2 | >
|
Wenn schon Makros auflösen, dann alle ;-)
1 | typedef char prog_char __attribute__((__progmem__));
|
Was gcc in Ende sieht ist also ein Typ, an dem ein Attribut klebt.
Auf den Zugriff über einen so attribuierten Zeiger hat das aber keinen
Einfluss, d.h. avr-gcc erzeugt den selben Code. Man muss also immer
händisch über pgm_foo o.ä. zugreifen.
Siehe auch
Beitrag "Re: function c asm bedeutung"