首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

但是把构造体改成union就没法用

2013-02-20 
但是把结构体改成union就没法用?结构体可以定义结构体指针typedef struct _reg1{unsigned char reg1_0:1u

但是把结构体改成union就没法用?
结构体可以定义结构体指针
typedef struct _reg1
{
   unsigned char reg1_0  :1;
   unsigned char reg1_1  :1;
   unsigned char reg1_2  :1;
   unsigned char reg1_3  :1;
   unsigned char reg1_4  :1;
   unsigned char reg1_5  :1;
   unsigned char reg1_6  :1;
   unsigned char reg1_7  :1;
}reg1;

#define REG1 (struct reg1*)0x140

void main(void)
{
  REG1->reg1_0 = 1;  
}
但是把结构体改成union就没法用,高手指教。
typedef union _reg1
{
   unsigned char BYTE;
   struct _Bit{
     unsigned char reg1_0  :1;
     unsigned char reg1_1  :1;
     unsigned char reg1_2  :1;
     unsigned char reg1_3  :1;
     unsigned char reg1_4  :1;
     unsigned char reg1_5  :1;
     unsigned char reg1_6  :1;
     unsigned char reg1_7  :1;
  }bits;
}reg1;
#define REG1 (union reg1*)0x140

void main(void)
{
  REG1->BYTE = 0;
  REG1->bits.reg1_0 = 1;  
}
[解决办法]
看起来是可以的,具体出了什么问题?
[解决办法]
没什么问题啊?出了什么问题?下面是main函数中的测试代码,编译,运行都没有问题。


unsigned char a; 
reg1* test;
test = (reg1 *)(&a);
test->BYTE = 1;
test->bits.reg1_0=1;
printf(" %d", a); 

[解决办法]
单片机 口都是如此定义的
[解决办法]
no problem~~~~~~~~~~~

热点排行