Gast
#1061668
Hallo zusammen, würde gerne wissen welche aktion mit diesem makro ausgeführt wird. #define BlaBla(x) (*((volatile uint8 *)(x))) Schönen Dank für eure Hilfe. MfG markus
|
Anzeige
|
Frage zu einem define
Gast
#1061668
Hallo zusammen, würde gerne wissen welche aktion mit diesem makro ausgeführt wird. #define BlaBla(x) (*((volatile uint8 *)(x))) Schönen Dank für eure Hilfe. MfG markus Das übergebene Argument x wird in einen (volatile-) Pointer auf "uint8" gecastet und dereferenziert.
Gast
#1061676
Hi, dabei handeltes sich um ein casting auf volatile uint8* und eine Dereferenzierung des gecasteten Pointers (auslesen des Wertes auf das dieser Pointer zeigt). Bsp. x= 0x80 a= 0x20 ptr= &a = 0x80 *((volatile uint8 *)(x)) liefert 0x20
Gast
#1061682
Danke
Gast
#1061745
Solche Makros weisen oft auf üblen Code hin...
Gast
#1061771
> Solche Makros weisen oft auf üblen Code hin... Das dürfen aber die Entwickler der AVR-Libc nicht lesen ;-) Dort werden nämlich genau solche Konstrukte verwendet, um I/O-Register zu definieren, was in meinen Augen aber völlig in Ordnung ist. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|