我是Ada编程的新手,所以对数组初始化几乎没有疑问,我无法克服。请让我知道您的输入:
type Faults_db is
record
Det_bits : Integer_16;
Det_faults : Faults_set.Set_init_type(1..12);
end record;
type Faults_db_array is array (Fault_types.Fault_mode_Type) of Faults_db;
初始化Det_faults时,以下显示的初始化选项在存储模式上将导致相同还是不同:
Det_faults => Faults_set.Set_init_type'(1..1 => Fault_types.FAULT_1),
OR
Det_faults => Faults_set.Set_init_type'(Fault_types.FAULT_1),
类似地,下面的这些初始化是否相同,请评论。
Detected_mask => Faults_set.Set_init_type'(1 => Fault_types.Fault_1,
2 => Fault_types.Fault_2,
3..12 => Fault_types.Fault_3)
OR
Detected_mask => Faults_set.Set_init_type'(Fault_types.Fault_1,
Fault_types.Fault_2,
others => Fault_types.Fault_3)
根据我对各种Ada资源的了解,两者应该是相同的,因为在声明我要提及Det_faults : Faults_set.Set_init_type(1..12);
的范围时,但是,我想知道是否存在任何差异。
谢谢。
答案 0 :(得分:2)
Det_faults => Faults_set.Set_init_type'(1..1 => Fault_types.FAULT_1),
OR
Det_faults => Faults_set.Set_init_type'(Fault_types.FAULT_1),
这两个都不会编译,因为Det_faults
是一个包含12个元素的数组。
Detected_mask => Faults_set.Set_init_type'(1 => Fault_types.Fault_1,
2 => Fault_types.Fault_2,
3..12 => Fault_types.Fault_3)
OR
Detected_mask => Faults_set.Set_init_type'(Fault_types.Fault_1,
Fault_types.Fault_2,
others => Fault_types.Fault_3)
这些将具有相同的效果(假设,当您说Detected_mask
时,您的意思是Det_faults
。