Witam
Podczas czytania książki natrafiłem na pewien fragment kodu, wygląda on następująco .
Dodam,ze kod jest pisany na avr.
#include<avr/io.h>
#define _PORTB ( *(volatile IO*) &PORTB) //wlasnie tego polecenia nie rozumiem
int main(void)
{
DDRB=0xFF;
PORTB=0xFF;
typedef struct
{
unsigned int b0;
unsigned int b1;
unsigned int b2;
unsigned int b3;
unsigned int b4;
unsigned int b5;
unsigned int b6;
unsigned int b7;
} IO ;
_PORTB.b0=0;
_PORTB.b1=1;
_PORTB.b2=0;
}
Nie moge niestety zrozumieć jak działa poniższy fragment kodu
#define _PORTB ( *(volatile IO*) &PORTB)
wiem jak działa #define, wiem co oznacza volatile, jednak nie mogę zrozumieć całosci.
byłbym bardzo wdzięczny gdyby ktoś mógł mi to wytłumaczyć(postarać się powoli przeanalizować), oraz pokazać jakiś najprostszy przykład w klasycznym C na zastosowanie podobnej sztuczki.
usunięcie zbędnych pustych linii z kodu - fp