本帖最后由 Zoozo 于 2013-12-24 14:27 编辑
在前段工作中,用dsp2812移植协议的时候,遇到一个问题,在一个结构指针,指向一个8位数组时候,发现出现问题。即调用结构中定义16位的变量,并不是想象中的,指向8位数组的两个字节,而是8位数组的一个字节。
后来仿真发现,2812的8位数据在内存中也是占16位的地方,只是高位为0罢了。
所以我在结构中只能把16位的数据定义成数组,即两个16位数。这样才能对应上 ,哈哈
不知道大家听明白没有,你们是如何解决这个问题的呢?
比如结构
struct A_state {
u8_t state;
u8_t state2;
u16_t count;
char *dataptr;
char *script;
};
unsigned char appdata[6]={1,2,3,4,5,6}
#define BUF ((A_state *)&appdata[0])
这时
BUF->count 就是appdata[3]的值3。
而不是appdata[3]和appdata[4]的组合值34。
而在其他结构体系下,这个BUF->count 的值应该是34。这点需要注意! |