我遇到了一个与C中的类型转换相关的错误。我有一个结构,它持有一个名为unioffs的浮点值,我需要将该浮点值放入缓冲区。为此我使用memcopy功能。 以下是我实施的内容。
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:无效的类型转换
我做错了什么?
答案 0 :(得分:0)
我认为(float *)应该是(char *)或使用det_stup.unioffs的地址
答案 1 :(得分:0)
您需要(&
)unioffs
字段的地址,并且需要在数组中提供DET_STUP的索引:
memcpy(guc_sensor_config_data+1*14, &det_stup[i].unioffs,4);