Ada变体记录
-- 声明schar是有符号8位整数
subtype schar is short_short_integer;
-- 声明uchar是无符号8位整数
type uchar is mod 2**8;
-- 在C中char有时可以看成无符号的,下面在Ada中制造一个等价的东西
-- 实际上几乎不会用下面的东西,只是做个例子。
type char(bSign:boolean:=true) is record
case bSign is
when true=>
S:schar;
when false=>
U:uchar;
end case;
end record; -- char'size最小值则是16
c0:char:=(bSign=>false,U=>255);
像char这个结构中,首先是bSign(注意:此处是一个字节,1 Bit会消耗一个字节),然后是S或U。
如果,在声明中加入unchecked_union约束,那么就和C语言中的union一样了。
这里要学习一下unchecked_union,意思是不加检查的联合
type char(bSign:boolean:=true) is record
case bSign is
when true=>
s:schar;
when false=>
u:uchar;
end case;
end record with unchecked_union,size=>8;
此时char’size=8 。