C语言结构位域的问题。新手问问题,别觉得我白痴,,,
一个C语言中结构位域写法的问题原来的写法:
typedef union
{ unsigned char Switch;
struct
{
unsigned BIT0: 1;
unsigned BIT1: 1;
unsigned BIT2: 1;
unsigned BIT3: 1;
unsigned BIT4: 1;
unsigned BIT5: 1;
unsigned BIT6: 1;
unsigned BIT7: 1;
} BITS;
} SWITCH;
SWITCH InPut;
#define input0 InPut.BITS.BIT0
#define input1 InPut.BITS.BIT1
#define input2 InPut.BITS.BIT2
#define input3 InPut.BITS.BIT3
#define input4 InPut.BITS.BIT4
#define input5 InPut.BITS.BIT5
#define input6 InPut.BITS.BIT6
#define input7 InPut.BITS.BIT7
问题1:我觉得这样写过于累赘(我是新手,不知道为什么要写成这样),能不能下面这种写法实现同样功能?
问题2:unsigned BIT0: 中只有0和1的变化,直接写BIT0: 可以不可以??
struct bits
{
unsigned BIT0: 1;
unsigned BIT1: 1;
unsigned BIT2: 1;
unsigned BIT3: 1;
unsigned BIT4: 1;
unsigned BIT5: 1;
unsigned BIT6: 1;
unsigned BIT7: 1;
} Switch;
#define input0 Switch.BIT0
#define input1 Switch.BIT1
#define input2 Switch.BIT2
#define input3 Switch.BIT3
#define input4 Switch.BIT4
#define input5 Switch.BIT5
#define input6 Switch.BIT6
#define input7 Switch.BIT7
这样的话结果是一样的,定义了一个一个字节的变量Switch,并且可以对这个字节变量进行位操作,有简单的写法为什幺要多写几行字??