Пример для микроконтроллера: с одной стороны это указатель ну структуру, с другой на обычный тип - C (СИ)

Формулировка задачи:

u8_t *uip_buf;
 
#define BUF                     ((struct uip_eth_hdr *)uip_buf)
Сначала uip_buf приводится к типу u8_t, потом к типу указателя на структуру (struct uip_eth_hdr *) Разве так можно делать?) А потом используется в самой программе таким образом
uip_buf = (u8_t *)(((unsigned long)ucUIPBuffer + 3) & 0xfffffffe);
то есть мы ему присваиваем адрес, если я правильно понимаю, предпологая что он типа u8_t. И потом используем его как указатель на структуру
if(BUF->type == htons(UIP_ETHTYPE_IP))
Это взято из примера на микроконтроллер.Никак не могу понять как правильно это понимать, с одной стороны это указатель ну структуру, с другой на обычный тип ...

Код к задаче: «Пример для микроконтроллера: с одной стороны это указатель ну структуру, с другой на обычный тип - C (СИ)»

textual
char*(0x000001)+2==char*(0x000003)      sizeof(char)==1(байт)
int*(0x000001)+2==int*(0x000009)        sizeof(int)==4(байт)

8   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ