压缩结构体是一种可以将压缩位向量作为结构成员进行访问的方法。换句话说,如果struct的所有成员仅由位字段组成并且可以无间隙地打包在内存中,则它可以是压缩结构。例如:在下面的struct定义中,所有成员都可以表示为位向量(int等于32位,short int到16位,byte到8位),并且一个struct可以打包到单个连续内存56bit。
struct packed {
int a;
short int b;
byte c;
} pack1_s;
非压缩结构体不需要打包到连续的bit位中,因此在不同成员之间可以存在空隙。下面是一个无法压缩的结构体。
struct {
string name;
int age;
string parent;
} record_s