【发布时间】:2012-01-22 06:51:23
【问题描述】:
可能重复:
How do I find the size of a struct?
Struct varies in memory size?
我正在使用以下结构进行网络通信,它在两者之间创建了很多不必要的字节。
它给出的大小与预期的 8 字节不同。
struct HttpPacket {
unsigned char x1;
union {
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
unsigned char bytes[7];
unsigned long num;
}
即使我正在从联合中删除字段,Following 也会给出不同的大小
struct HttpPacket {
unsigned char x1;
union {
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
unsigned long num;
}
另外,一个更清楚的例子
struct {
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
它给出的大小是 8,而不是 7。 我再添加一个字段,它仍然给出相同的大小
struct {
unsigned char EXTRAADDEDFIELD;
unsigned char len;
unsigned short host;
unsigned char content[4];
} packet;
有人可以帮忙解决这个问题吗?
更新:我需要在传输数据包时保持格式,所以我想跳过这些填充
【问题讨论】:
-
我需要在传输数据包时保持格式,所以我想跳过这些填充
-
在 XCode 4 LLVM 编译器上需要这个
-
但是,我需要 XCode 4 新 LLVM 编译器的解决方案。