本帖最后由 yuntian 于 2012-5-15 21:27 编辑
struct
{unsigned x1:1;
char x2;
int x3;
char x4;
}user_para;
现在我想在程序中保存x4这个变量到EEPROM中去,因为其它变量未变更,所以
只想保存这一个.
void save(void)
{void *p1,p2; //定义两个无类型指针
char i;
p1=&user_para; //指向结构体
p2=&user_para.x4; //指向要保存的变量
i=(char)(p2-p1); //计算变量相对于结构体的偏移地址
erprom_write( sizeof(x4),0+i,&user_para.x4); //保存到偏移地址去.
}
用的是C18的编译器,只有这样写才能通过编译,不知道是否还有其它的写法,
当然也可以直接看成员变量的编译后的地址就可以直接在程序里在0+I这里给
一个合适的值就可以了,但这样会造成程序不具有通用性,各位有没有更好的办** |