结构体定义后加PACKED,struct TRegister{s8 szUsrName[32+1];s8 szUsrPwd[32+1];};PACKED

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 13:45:11
结构体定义后加PACKED,struct TRegister{s8 szUsrName[32+1];s8 szUsrPwd[32+1];};PACKED

结构体定义后加PACKED,struct TRegister{s8 szUsrName[32+1];s8 szUsrPwd[32+1];};PACKED
结构体定义后加PACKED,
struct TRegister
{
s8 szUsrName[32+1];
s8 szUsrPwd[32+1];
};
PACKED

结构体定义后加PACKED,struct TRegister{s8 szUsrName[32+1];s8 szUsrPwd[32+1];};PACKED
这个你不用思考了~想不通的
__packed是字节对齐的意思.
比如说int float double char它的总大小是4 + 4 + 8 + 1 = 17
但如果你不用__packed的话,系统将以默认的方式对齐(假设是4字节),那么它占4 + 4 + 8 + 4 = 20;(不足4字节以4字节补齐).
但在VS2008上述方法不能用了(低版本我没有试过),如果想设置对齐方式,只要选择工程属性-配置属性-C/C++-代码生成就能设置,它的选项有1、2、4、8、16.在GCC下,可以在加上#pragma pack(4) 4字节对齐的意思,其它同理.