Pointer chaos (Interpretations-Problem)

#820126
Lesenswert?

Hallo zusamman,

ich habe ein kleines Problem beim interpretieren des folgenden codes:

#define FLASH_PROGRAM_ADDR(x) \
  (*(volatile unsigned long *)(void *)(&__IPSBAR[(0x04000000 + (x))]))

was geschieht da genau?? kann mir da vielleicht jemand helfen?
Vielen Dank!

Gruss
Roman
#820197
Lesenswert?

&__IPSBAR[(0x04000000 + (x))] ergibt die Adresse des Array-Elementes
   0x04000000 + (x)

(void *) (&__IPSBAR[(0x04000000 + (x))]) erzeugt einen void-Pointer
   auf die Adresse

(volatile unsigned long *)(void *)(&__IPSBAR[(0x04000000 + (x))]) castet
   den void-Pointer in einen volatile unsigned long Pointer um

(*(volatile unsigned long *)(void *)(&__IPSBAR[(0x04000000 + (x))]))
   dereferenzeirt den Pointer, d.h. es gibt den Inhalt der Adresse
   zurück, auf die der Pointer zeigt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren