数组初始化方法和内存中存储模式的差异

时间:2018-11-06 11:24:34

标签: ada

我是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);的范围时,但是,我想知道是否存在任何差异。

谢谢。

1 个答案:

答案 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