pointers in C with a #define
- by milan
The function:
#define ASSOC(port) (*(volatile bit_field *) (&port))
The function call:
#define SCLK ASSOC(PORTC).bit0
bit_field defined as a struct like this:
typedef struct {
unsigned char bit0 :1, bit1 :1, bit2 :1, bit3 :1, bit4 :1, bit5 :1,
bit6 :1, bit7 :1;
} bit_field;
I don't know where &port is defined.
Can someone please explain how the function is read and how it works please? I am not very good with pointers and this example in particular is very confusing with "*" in the front and at the end and the "&" with the port.
Thank you