我有这个代码:
// size probably 4 bytes
struct NotPacked
{
uint16_t first;
uint8_t second;
};
// size is 3 bytes
struct Packed
{
uint16_t first;
uint8_t second;
}__attribute__((packed));
我想使用相同的结构,有时是打包的,有时不是。 您知道如何编写这段代码来避免重复吗?
[编辑] 问题应该是:“.. 编写这段代码,尽可能避免代码重复”
[编辑2] 我已经尝试使用空类优化进行实验但没有成功
[编辑3] 添加了基本示例:
Packed packet;
receivePacketFromNetwork(&packet); // Fill the structure with data coming from the network
NotPacked notPacked = packedToUnpacked(packet); // convert packed structure to unpacked
processUnpacked(notPacked); // Do a lot of computations
最佳答案
I'd like to use the same structure, sometimes as packed, sometimes not. Do you know any way to write this
没有。
您究竟如何期望用相同的代码定义两个完全不同的内存布局?
关于c++ - 打包结构和不打包没有代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738169/