中级会员
 
- 积分
- 325
- 金钱
- 325
- 注册时间
- 2016-10-21
- 在线时间
- 43 小时
|
发表于 2016-10-24 14:30:18
|
显示全部楼层
#pragma pack(1)
typedef struct{
uint8_t a;
uint8_t b;
uint16_t c;
uint8_t * d=(uint8_t*)0;
}_msg;
uint8_t buffer[64];
void test(uint8_t *data)
{
_msg msgdata;
_msg *msg;
msg = &msgdata;
msg->d=buffer;
msg->a = 1;
msg->b = 2;//没有①这里就开始错了
msg->c = 3;
msg->d[0] = data[0];//这里没错,应该是用了*d的空间
msg->d[1] = data[1];//运行错误,编译器只给*d分配了一个u8,这里会有问题。也就是说①处给结构体指针分配了内存,但是结构体内的指针并没有。
buffer[4+0] = data[0];//可以达到上面两行的效果,这样处理需要引入3这个参数,虽然没问题,但总感觉不爽。
buffer[4+1] = data[1];
} |
|