我正在尝试使用Delphi东京中的FreePascal 2.2.2 ibase60.inc的这个答案底部链接(一个32位Windows应用程序)。
它包含指令{$PACKRECORDS C}。文档说:
特殊值C用于指定GNU编译器的对齐方式。它只应在为C例程制作导入单元时使用。
谷歌搜索gnu cc结构对准我在C结构包装的失落艺术中读到了关于现代处理器的文章
..。x86和ARM上的基本C类型是自对准的.指针,无论是32位(4字节)还是64位(8字节)也是自对齐的.
有什么我必须替换的代码指令,以确保正确的(非)包装在Delphi中调用这些方法的InterBase/Firebird DLL?或者我可以假设Delphi的行为类似于GNU CC?
这里是该ibase60.inc文件的完整代码。
发布于 2017-10-28 20:07:09
gcc排列,也称自然排列,是将边界上的每一个字段按其大小整除。如果您单击Ondrej到此页的链接,您将看到每个类型都对齐了它的大小。(尽管IMHO是Ondrej链接到的页面中的语言很笨拙)
因此,如果在游戏中没有16字节的基类型,它应该是可以的。(我认为德尔福一旦适应了16字节的基类型,就会将A+更改为A16+)
我知道fpc有16字节对齐,但甚至不知道对应的字段类型是什么(64位powerpc上的int128?SSE类型?)
https://stackoverflow.com/questions/46978871
复制相似问题