本帖最后由 x181084431 于 2010-5-27 14:10 编辑
谢谢楼下,问题解决了
本人正在编写一个STM8的程序,使用是IAR的编译器!
昨天出现一个问题,现在还没有解决,特向大家救助!
问题如下:
我定义了一个UNION 结构体如下
typedef union
{
struct
{
unsigned i:1;
unsigned j:1;
unsigned k:1;
unsigned l:1;
unsigned m:1;
unsigned n:1;
unsigned o:1;
unsigned p:1;
}IE
unsigned char sound;
}SOUND;
SOUND sound;
对sound.IE.i ..... sound.IE.p 操作都可以
但对sound.sound进行操作无法改变sound.IE.i ..... sound.IE.p 里的值。
DEBUG时发现sound.IE sound.sound的地址为0X000040,
但对sound.sound进行操作后sound.sound的地址变更为其它地址,(操作完成后,变回为0X000040),但sound.IE地址和值一直无变更.
后对下列共同体进行测试,一切正常
typedef union
{
unsigned char key;
unsigned char sound;
}SOUND;
SOUND sound;
现在只能对sound.IE.i ..... sound.IE.p 单独一个一个操作。由于我程序中这咱结构大多了,若一个一个单独操作,不现实!
请大家帮忙!看看是什么原因,有什么办法解决!或者有什么替代方法! |