Я столкнулся с ошибкой, связанной с typecasting в C. У меня есть структура, которая держит значение float, называемое unioffs, и мне нужно принять это значение float в буфер. Для этого я использую функцию memcopy. Следующее - это то, что я реализовал.Ошибка Typecast в C
typedef struct __attribute__ ((aligned (1), packed))
{
/*01 Bytes*/ uint8_t flags;
/*01 Bytes*/ uint8_t store;
/*04 Bytes*/ float unioffs; /* detector offset in univalues default=0 */
/*04 Bytes*/ float scale; /* detector scale - default =1 */
/*04 Bytes*/ float valalrm; /* value alarm level - in univalue*/
/*04 Bytes*/ float dosalrm; /* dose alarm level - in unidose*/
/*04 Bytes*/ float samperc; /* percentage of the output sampled */
/*04 Bytes*/ float dcstime; /* time of the exposure in seconds */
/*03 Bytes*/ int8_t fillup[3]; /* !!!! allways fill up to 29 bytes */
} DET_STUP;
int main()
{
DET_STUP det_stup[DET_NROFCHAN]; //NROFCHAN is #defined is 10
uint8_t response_to_LV[42];
memset(response_to_LV,0,42);
memset(guc_sensor_config_data,0,40);
//guc_sensor_config_data is a global buffer of 40 bytes
memcpy(guc_sensor_config_data+1*14,(float*)det_stup.unioffs,4);
//Further implementaions to send the buffer through UART
}
Ошибка, что я получаю здесь: Ошибка # 171: неверный тип преобразования
Что я делаю неправильно?
Можете ли вы предоставить полный компилируемый пример, пожалуйста? Включая определения для 'DET_STUP',' DET_NROFCHAN', 'guc_sensor_config_data' и' LEFT_CH' – simonc
Какой тип 'det_stup [LEFT_CH] .unioffs'? С изменением на 'det_stup.unioffs' вы получите« запрашивающий элемент в чем-то не структурированном или объединенном »или подобном. –
det_stup.unioffs - это float –