C中的类型错误

时间:2013-06-04 10:28:21

标签: c casting floating-point buffer structure

我遇到了一个与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:无效的类型转换

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为(float *)应该是(char *)或使用det_stup.unioffs的地址

答案 1 :(得分:0)

您需要(&unioffs字段的地址,并且需要在数组中提供DET_STUP的索引:

memcpy(guc_sensor_config_data+1*14, &det_stup[i].unioffs,4);