void *指针不能直接赋值给一个具体的数据类型

有以下结构体定义

typedef struct  {
	int bat;			//电池电量百分比,如果设备无法提供,该值为-1。例如50,表示50%
	int vol;			//电池电压,如果设备无法提供,该值为-1。例如,43表示4.3V
	int signal; 		//摄像头信号强度
	char authstate; 	//设备授权状态 1-已授权  0-未授权
	char tamperState;	//设备的安装状态 1-被拆  0-安装
	short vbat;			//电池电压
	short temp;			//电量计温度
	short reset_flag;	//电量计复位
	unsigned char uxUsbState;	//usb状态 0:usb拔出 1:usb插入
	unsigned char uxChargeFull; //0-充电不满 1-充电满
	char reserve[10];	//保留数据
	char hw_ver[12]; //型号信息
	char sw_ver[32]; //871版本
	char dsp_ver[32];//DSP版本信息
	char xMcuVer[16];//MCU版本信息
}DeviceBaseInfo_t;

接收时,通过回调函数传来数据,消息放在了msgdata所指内存空间

int subdev_msgcallback(int msgtype, char *msgdata, int channel, long reserve);

错误的访问方法

DeviceBaseInfo_t *p = (void *)msgdata;

正确的访问方法

DeviceBaseInfo_t *p = (DeviceBaseInfo_t *)msgdata;
posted @ 2021-11-04 14:31  海林的菜园子  阅读(143)  评论(0编辑  收藏  举报