请教如下UINTm_Class : 7是什么意思? 该结构作用是什么?
struct _ITEM_TYPE
{
struct
{
UINTm_Class : 7 ;//???这里什么意思?
UINTm_Quality: 7 ;
UINTm_Type: 7 ;
UINTm_Index: 11 ;
};
UINTToUINT()
{
UINTuid = 0 ;
uid+= m_Class;
uid= uid<<7;
uid+= m_Quality;
uid= uid<<7;
uid+= m_Type;
uid= uid<<11;
uid += m_Index;
return uid;
}
UINTToSerial()const
{
UINT Serial;
Serial = m_Class;
Serial= Serial*100+m_Quality;
Serial= Serial*100+m_Type;
Serial= Serial*1000+m_Index;
return Serial;
}
BOOLisNull() const
{
return (m_Class==0)&&(m_Quality==0)&&(m_Type==0)&&(m_Index == 0);
}
BOOLoperator==(_ITEM_TYPE& Ref) const
{
return (m_Class==Ref.m_Class)&&(m_Quality==Ref.m_Quality)&&(m_Type==Ref.m_Type)&&(m_Index==Ref.m_Index);
}
BOOLoperator>(_ITEM_TYPE& Ref) const
{
return ToSerial()>Ref.ToSerial();
}
BOOLoperator<(_ITEM_TYPE& Ref) const
{
return ToSerial()<Ref.ToSerial();
}
VOIDCleanUp()
{
m_Class=0;
m_Quality=0;
m_Type=0;
m_Index=0;
}
};
struct
{
UINT m_Class : 7 ;//???这里什么意思?
UINT m_Quality: 7 ;
UINT m_Type: 7 ;
UINT m_Index: 11 ;
};
#include <stdio.h>
#pragma pack(push,1)
union U {
unsigned char byte;
struct BF {
unsigned int b0:1;//a
unsigned int b1:1;//b
unsigned int b2:1;//c
} bf;
} u;
#pragma pack(pop)
unsigned char bt;
int a,b,c;
int main() {
for (bt=0;bt<8;bt++) {
u.byte=(unsigned char)bt;
a=u.bf.b0;
b=u.bf.b1;
c=u.bf.b2;
printf("byte 0x%02x -- c:%d b:%d a:%d\n",bt,c,b,a);
}
for (c=0;c<2;c++)
for (b=0;b<2;b++)
for (a=0;a<2;a++) {
u.bf.b0=a;
u.bf.b1=b;
u.bf.b2=c;
bt=u.byte;
printf("c:%d b:%d a:%d -- byte 0x%02x\n",c,b,a,bt);
}
return 0;
}
//byte 0x00 -- c:0 b:0 a:0
//byte 0x01 -- c:0 b:0 a:1
//byte 0x02 -- c:0 b:1 a:0
//byte 0x03 -- c:0 b:1 a:1
//byte 0x04 -- c:1 b:0 a:0
//byte 0x05 -- c:1 b:0 a:1
//byte 0x06 -- c:1 b:1 a:0
//byte 0x07 -- c:1 b:1 a:1
//c:0 b:0 a:0 -- byte 0x00
//c:0 b:0 a:1 -- byte 0x01
//c:0 b:1 a:0 -- byte 0x02
//c:0 b:1 a:1 -- byte 0x03
//c:1 b:0 a:0 -- byte 0x04
//c:1 b:0 a:1 -- byte 0x05
//c:1 b:1 a:0 -- byte 0x06
//c:1 b:1 a:1 -- byte 0x07