C语言项目开发过程中发现其他模块发给自己模块的消息长度与自己代码sizeof(struct)不一致,经过定位分析发现两边struct字节对齐方式不一致,C语言中默认为四字节对齐,如果struct字节不足4的倍数,则以4的倍数为sizeof最后的大小
例如:
struct a{
int b;
char c;
}a;
此时sizeof(a)则为8个字节,实际需要计算为5个字节,这时需要在struct头文件中设置1字节对齐,解决问题
#param pack(1)
..... //struct defined
#param pack()
后续撰写项目测试用例,又发现测试用例sizeof(a)与代码实际sizeof不一致,测试框架为C++,默认字节对齐方式也是四字节,此时需要设置测试框架的字节对齐方式为1字节,修改相应的头文件
#param once //头文件开头
... //functions defined
#param pack(push, 1)
...//struct defined
#param pack(pop, 1)
....