Geo*_*nos 4 c struct bit-fields
我需要以下面的形式处理一些数据:
typedef struct{
unsigned n1 : 12;
unsigned n2 : 12;
unsigned n3 : 12;
unsigned n4 : 1;
unsigned n5 : 35;
} data;
Run Code Online (Sandbox Code Playgroud)
我确保它们总共可以计算9个字节.
但他们没有..将该结构的9个字节写入文件并将其读回不会恢复所有数据,并sizeof(data)返回16.
这里的问题是什么?
问题是编译器出于效率原因添加了一些填充.
可以覆盖此行为.
有关如何使用gcc执行此操作,请参阅GCC中的强制对齐
有关如何使用visual c ++执行此操作,请参阅:在Visual C++中强制对齐