怎么简化定义——在共用体中定义一个int型变量,和占int变量高8位的变量

如何简化定义——在共用体中定义一个int型变量,和占int变量高8位的变量。
以TC3.0为例,
union
{unsigned int i;
  struct
  {unsigned :8;
unsigned l:8;
}b;
}a;
定义了两个变量,a.i(占16个字节),a.b.l(是前一个变量的高8位)。
我感觉这样定义很麻烦,我其实只要这两种形式a.i,a.l(去掉那个b)。
我知道可以采用宏的方式实现,但是我想用这种方式实现:
union
{unsigned int i;
  {unsigned :8;
unsigned l:8;
}
}a;
可是不行,怎样才能实现呢?望大牛指点!

------解决方案--------------------
用tpyedef先定义好你的结构体就可以啊
------解决方案--------------------
 
 tpyedef struct a
{unsigned :8;
unsigned l:8;
};
------解决方案--------------------
探讨
想不出什么太好的办法来 只有一个馊主意
#define l b.l

这样会影响所以有成员中有l的结构体……

------解决方案--------------------
typedef union
{
unsigned int i;
struct
{
unsigned int l:16;
unsigned int h:16;
};
}u;
u a;
VS2008支持匿名结构,如上,i为32位,可用a.l,a.h的语法来访问i的高16位和低16位。也可以把l省略了。
------解决方案--------------------
强制转换吧。。。
*((unsigned short*)&a) 就是16位的值了。
------解决方案--------------------
楼上说的有道理
要根据具体情况,来使用楼上的办法!
考虑字节对齐,和字节宽度
------解决方案--------------------
探讨

强制转换吧。。。
*((unsigned short*)&a) 就是16位的值了。