adacore

Ada中的位域

以下为位域用法之一,也是比较节省篇幅的办法。就是记录声明前加implicit_Packing编译指令。

type Bit1 is mod 2**1;

type Bit2 is mod 2**2;

type Bit3 is mod 2**3;


pragma Implicit_Packing;
type BlockStatus is record
b0:bit1:=0; -- 保留
bOFW:bit1:=0; -- 溢出
bIOBad:bit1:=0; -- I/O故障
bTout:bit1:=0; -- 超时
b4:bit1:=0; -- 保留
bQ:bit1:=0; -- 品质
bScan:bit1:=0; -- 是否扫描切除
bFST :bit1:=0; -- 是否计算过(品质)
Alarm:bit3:=2#000#; -- 报警类型
bAlarmAck:bit1:=0; -- 是否报警确认过
AlarmPriority:bit3:=0; -- 报警优先级
bAlarmCheck:bit1:=0; -- 是否报警切除
end record with size=>16;



评论