字节对齐:Delphi与C/C++的异同(300分)

  • 主题发起人 主题发起人 520zhuhaibo
  • 开始时间 开始时间
5

520zhuhaibo

Unregistered / Unconfirmed
GUEST, unregistred user!
thostname = Array[0..max_computername_length] Of Char;
_packet = Record
packetHead: word;
PacketGUID: TGUID;
packetsize: word;
rtuid: longword;
packetID: word;
HostName: thostname;
systime: TSYSTEMTime;
ParityLoword: word;
ParityHiword: word;
end;
Delphi与VC都是采用8字节对齐的方式
为何Delphi中Sizeof()取出_packet的大小与VC的不一样呢?
请赐教:字节对齐:Delphi与C/C++的异同,各自字节对齐是怎么对齐的?
问题价值是300+300+300;,请高手帮忙,急!!!
 
--------------------------------------------------------------
Delphi中Sizeof()取出_packet的大小与VC的不一样呢?
--------------------------------------------------------------

这个估计是因为当前版本的Delphi与VC对于各个数据类型如longword,word,TSYSTEMTime等等的定义不尽相同。

要做到各自字节对齐无差异,各个元素均选用相同的底层数据类型应该就没问题。

你名字好肉麻。。。
 
LuckyJackie:
1、现在讨论的是技术
2、你的回答太不负责了,且太肤浅了
3、请仔细研究下问题再作答
谢谢合作
 
packed record
 
人家回答的已经很仔细了,
 
这是因为delphi的对齐是和vc不一样的,如果想和他一样建议你使用packed关键字,这样就一样了
 
注意到project options中的Record field alignment了吗?
 
后退
顶部