Forum: Compiler & IDEs Was ist sizeof(pointer) auf 128KB-AVR?


von Dietmar (Gast)


Lesenswert?

Könnte mir bitte jemand sagen, was sizeof(uint8_t *) auf einem AVR mit 
128KB Flash-Speicher ist?

von mich (Gast)


Lesenswert?

afaik 1

von Dietmar (Gast)


Lesenswert?

In einem Byte kann man keinen Pointer aus dem Bereich 0 .... 128K 
ablegen. Es müssten 3 (24 bit) oder 4 (32 bit) sein.

von Grrrr (Gast)


Lesenswert?

1
printf("%d", sizeof(uint8_t *));

von Bernhard R. (barnyhh)


Lesenswert?

sizeof (uint8_t *) sollte exakt dasselbe ergeben wie sizeof(void *) , 
nämlich 2.

Derartige Pointer zeigen nämlich ins (kleine) RAM.

Bernhard

von (prx) A. K. (prx)


Lesenswert?

Zwei Threads zum gleichen Thema?
Beitrag "Re: 128KB-ATMegas: Adressierung anders?"

von Dietmar (Gast)


Lesenswert?

Dachte es ist hier besser aufgehoben. Jetzt hoffe ich mal, dass trotz 
16-bit-Pointern das Hantieren mit Funktionspointern im ganzen Adressraum 
einwandfrei funktionieren wird, z.B.

void (*ptr)(void);

ptr = Funktionsname;

(*ptr)();

von Stefan E. (sternst)


Lesenswert?

Dietmar schrieb:
> Jetzt hoffe ich mal, dass trotz
> 16-bit-Pointern das Hantieren mit Funktionspointern im ganzen Adressraum
> einwandfrei funktionieren wird

Mit ein wenig Glück schon. ;-)

Wichtig: beim Linken --relax benutzen.

von (prx) A. K. (prx)


Lesenswert?

Dietmar schrieb:

> (*ptr)();

Oder auch einfach ptr();

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.