Ada:理解变量“大小与类型”大小与值大小与对象大小
定义以下Ada类型:Ada:理解变量“大小与类型”大小与值大小与对象大小,ada,Ada,定义以下Ada类型: type Type_Huge is array (1 .. Integer'Last) of Float; type Type_B is (foo, bar, blop, bloub); type Type_A ( disc : Type_B := foo) is record case disc is when foo => My_int : Integer; w
type Type_Huge is array (1 .. Integer'Last) of Float;
type Type_B is (foo, bar, blop, bloub);
type Type_A ( disc : Type_B := foo) is
record
case disc is
when foo =>
My_int : Integer;
when bar =>
huge_data : Type_Huge := (others => 0.0);
when others =>
null;
end case;
end record;
1-您是否确认以下内容
my_var : Type_A;
键入_A'Size=my_var'Size返回False
2-我的尺码的实际价值是多少?
我认为尺寸至少是:
Type_B'Size + Integer'Size
3-A型尺寸的值是多少
我想说的是尺寸是可能配置的最大值
3-编译器是否还会添加其他可能隐藏到我的_var中的内容
我也读过一些关于价值大小和对象大小的文章
但我现在还不了解全部情况
Thx引用LRM第13.3节: 44对于每个子类型: 45 S尺寸[…] 48如果S是不确定的,则其含义由实现定义。[……]
换句话说:它是实现定义的。引用LRM中的第13.3节: 44对于每个子类型: 45 S尺寸[…] 48如果S是不确定的,则其含义由实现定义。[……] 换句话说:它是由实现定义的。如LRM中所引用,要求“大小由实现定义,用于不确定类型;此外,要求实施文件记录此特征: 45不确定子类型的大小含义 如果您的编译器是GNAT,这是它在参考手册中声明的内容: 不确定子类型的大小是可能的最大大小, 添加编译器开关-gnatR3时,可以看到编译器的选择。输出还列出了“值大小”的数字,因为它们取决于记录鉴别器的值。这个第三部分讨论子程序参数的大小。如LRM中所述,要求“大小由不确定类型的实现定义;此外,要求实施文件记录此特征: 45不确定子类型的大小含义 如果您的编译器是GNAT,这是它在参考手册中声明的内容: 不确定子类型的大小是可能的最大大小,
添加编译器开关-gnatR3时,可以看到编译器的选择。输出还列出了“值大小”的数字,因为它们取决于记录鉴别器的值。这个第二部分讨论子程序参数的大小。您至少应该在编译器中尝试一下;这会给你一个数据点,你至少应该在你的编译器上尝试一下;这会给你一个数据点。