不知道这是什么原因?

stevecrisewu 2004-08-13 04:08:42
typedef struct FbkItem{
char ff_state;
char ff_ftype[4]; /* file type */
char ff_attrib; /* attribute found */
short int iftime;
short int ifdate;
long ff_fsize; /* file size */
char ff_name[13]; /* found file name */
struct FbkItem *prev_item;
struct FbkItem *next_item;
}FbkItem;
这个结构体的大小在DOS下经过计算是35个字节,但是在xp下,计算怎么是40个字节啊?
经过分析,发现long这里多占用了2个字节,不知道为什么?而且奇怪的是一样的结构,在我的另外一个程序里(VC),发现其大小是36个字节。
莫名其妙啊,哪位高手,看看问题在哪里。
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yening0914 2004-08-13
  • 打赏
  • 举报
回复
上面些写错了,抱歉
如果:
(1)#pragma pack(1)就是35
(2)#pragma pack(2)就是36
(3)#pragma pack(4)就是40
(4)#pragma pack(8)就是40
yening0914 2004-08-13
  • 打赏
  • 举报
回复
如果:
(1)#pragma pack(1)就是35
(2)#pragma pack(1)就是36
(3)#pragma pack(1)就是40
yening0914 2004-08-13
  • 打赏
  • 举报
回复
对齐方式就是每一个变量或结构是按几个字节的倍数对齐!
stevecrisewu 2004-08-13
  • 打赏
  • 举报
回复
怎么都是这么言简意赅啊,难道是我分数太少?

我可以加的啊

说详细点,我是真的不知道怎么回事。
flyelf 2004-08-13
  • 打赏
  • 举报
回复
#pragma pack(1)
struct ...

#pragma pop()
stevecrisewu 2004-08-13
  • 打赏
  • 举报
回复
什么是不同的对齐方式?不懂啊
oyljerry 2004-08-13
  • 打赏
  • 举报
回复
嗯,赞成楼上的,这是有不同的对齐方式引起的
happyabird 2004-08-13
  • 打赏
  • 举报
回复
因为设置了不同的对齐方式了

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧