位域问题
该问题==以下的帖子:
[url=http://community.csdn.net/Expert/topic/5450/5450048.xml?temp=.6241114]http://community.csdn.net/Expert/topic/5450/5450048.xml?temp=.6241114[url]
具体描述为:
位域问题:
首先我用位域的方式定义了一个结构CCell,如下:
typedef tagCell
{
int CellInfo: 2;
int CellDesc: 2;
}CCell;
可以看出,CCell的有意义的空间只有4位;
现在,我想声明一个只占用1字节的结构CInfo,它里面的域是长度为2的CCell的数组(因为,我想从一个二进制文件的特定位置处读出CCell并对其中的每一个CInfo做相同的操作,为节省代码,所以要用到数组或者类似数组的处理方式)。
现在,在VC6下存在以下的问题:(其它环境没有尝试过)
首先,单独的CCell必须占用1字节空间;
其次,如果我对CInfo做以下声明typedef tagInfo{CCell cells[2] : 4;}CInfo;会发生两个错误:
1、位域变量必须使用整形,不能使用结构类型;
2、位域不能用于数组。
请问该如何定义CCell和CInfo??