Что означает *(uint8_t*)(&pbuf)? - C (СИ)
Формулировка задачи:
Всем привет,
Что делается в выражении
???
Спасибо.
uint8_t *pbuf uint8_t memtype;
memtype = *(uint8_t*)(&pbuf);
Решение задачи: «Что означает *(uint8_t*)(&pbuf)?»
textual
Листинг программы
uint16_t hal_nrf_read_multibyte_reg(uint8_t reg, uint8_t *pbuf) { uint8_t ctr, length; uint8_t memtype; uint8_t read_byte; /*lint -esym(530,read_byte) symbol not initialized*/ bool first_round; first_round = true; memtype = *(uint8_t*)(&pbuf); switch(reg) { case HAL_NRF_PIPE0: case HAL_NRF_PIPE1: case HAL_NRF_TX: length = ctr = hal_nrf_get_address_width(); CSN_LOW(); hal_nrf_rw(RX_ADDR_P0 + reg); break; case HAL_NRF_RX_PLOAD: reg = hal_nrf_get_rx_data_source(); if (reg < 7U) { length = ctr = hal_nrf_read_rx_payload_width(); CSN_LOW(); hal_nrf_rw(R_RX_PAYLOAD); } else { ctr = length = 0U; } break; default: ctr = length = 0U; break; } if (memtype == 0x00U) { uint8_t data *buf = (uint8_t data *)pbuf; NRF_READ_MULTIBYTE_REG_COMMON_BODY } else if (memtype == 0x01U) { uint8_t xdata *buf = (uint8_t xdata *)pbuf; NRF_READ_MULTIBYTE_REG_COMMON_BODY } else if (memtype == 0xFEU) { uint8_t pdata *buf = (uint8_t pdata *)pbuf; NRF_READ_MULTIBYTE_REG_COMMON_BODY } else { uint8_t *buf = (uint8_t *)pbuf; NRF_READ_MULTIBYTE_REG_COMMON_BODY } CSN_HIGH(); return (((uint16_t) reg << 8) | length); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д