最近工作,学习到一个有意义的C/C++结构体或类的操作技巧,看看如下结构体的定义
//设置字节对齐为1,来反应结构体的真实大小
#pragma pack(push,1)
struct _pack_1
{
//cLen指明cmd指向的缓冲区大小
int cLen;
//在vc中不可以为0,那么设置为1;
char cmd[0];
};
struct _pack_2
{
//cLen指明pCmd指向的缓冲区大小
int cLen;
char *pCmd;
};
#pragma pack(pop)
这个结构体描述了一个简单的网络数据包,而他的长度是不定长的!是不是觉得比较奇怪,这里定义一个char cmd[0]是什么意思、又有什么意义呢?