我试图定义一个8字节的结构。这种结构必须是空间有效的,因为我们将有数百万个这样的结构,而且我们使用的内存量非常宝贵。
基于类型,结构可以包含2种不同类型的信息。
以下面的方式定义它们使其成为8字节-我假设address
成为8字节,因为它被定义为结构体。有没有一个好的清洁方法来实现这一点?我可以删除内部结构体和联合体,并将其定义为62位字段,然后在代码中根据需要强制转换,但我试图避免这样做。
#pragma pack(push, 1)
struct Record{
union {
struct {
uint64_t offset:48;
uint16_t len:14;
} address;
uint64_t opaque:62;
} recInfo;
uint8_t recType:2; // Indicates the type of the record
};
#pragma pack(pop)
1条答案
按热度按时间e4eetjau1#
你所提出的听起来像是通过联合使用类型双关语,这是一种未定义的行为。相反,您可以将数据存储在一个类型中,并提供成员函数来访问它。