Benötige Hilfe bei Casting

Gast #2228007
Lesenswert?

Hallo Board..

ich bekomme ein Warning nicht weg..

in der IO Struktur gibt es einen Void Pointer

struct st_exdmac0 {
    void *EDMSAR;
};

dieser wird befüllt mit der Startadresse eines ExDMA Transfers:
unsigned short *LCDdataPTR = (unsigned short*)0x06000002UL;

EXDMAC0.EDMDAR = (unsigned long) LCDdataPTR; // set the source address

es funktioniert zwar, dh im EDMSAR steht 0x06000002UL jedoch will der 
KPIT Gnu Compiler noch einen Cast von mir und ich komme nicht dahinter:

warning: assignment makes pointer from integer without a cast

kann mir jemand helfen?

lg
Mike
Gast #2228023
Lesenswert?

EXDMAC0.EDMDAR = (unsigned long) LCDdataPTR;
-->
EXDMAC0.EDMDAR = LCDdataPTR;

An einen void-pointer kann man eigentlich jeden anderen Pointer-Typ 
zuweisen, du castest aber erst auf eine vorzeichenlose Ganzzahl (Warum 
eigentlich?).
#2228278
Lesenswert?

Wenn überhaupt musst du auch auf (unsigned long*) casten und nicht auf 
(unsigned long). An sonsten wandelst du deinen Pointer erst in eine 
Ganzzahl um und danach durch die Zuweisung auf einen (void*) wieder in 
einen Pointer. Über letzteres beschwert sich der Compiler dann auch 
zurecht, weil das (außer in deinem Spezialfall) meist Schwachsinn ist.

Und wie bereits von test gesagt, auf einen (void*) kannst du eigentlich 
alle anderen Pointer direkt zuweisen.

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