我在使用 Ada 记录类型时遇到了一些问题。我正在使用 Sequential_IO 读取二进制文件。为此,我必须使用大小是文件大小倍数的类型。在我的情况下,我需要一个 50 字节的结构,所以我创建了一个这样的类型(“Vecteur”是一个 3 个浮点数的数组):
type Double_Byte is mod 2 ** 16; for Double_Byte'Size use 16;
type Triangle is
record
Normal : Vecteur(1..3);
P1 : Vecteur(1..3);
P2 : Vecteur(1..3);
P3 : Vecteur(1..3);
Byte_count1 : Double_Byte;
end record;
当我使用三角形类型时,大小为 52 个字节,但当我在其中单独获取每个大小时,我发现 50 个字节。因为 52 不是我文件大小的倍数,所以我有执行错误。但我不知道如何修复这个大小,我进行了一些测试,我认为它来自 Double_Byte,因为当我从记录中删除它时,我发现它的大小为 48 字节,而当我放回它时,它又是 52 字节。
谢谢你的帮助。