Разница в способе инициализации массива и схеме хранения в памяти - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в программировании на Аде, поэтому у меня было мало сомнений в инициализации массива, с которыми я не мог разобраться. Пожалуйста, дайте мне знать ваши входные данные:

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)

Согласно моему пониманию из различных ресурсов Ады, оба должны быть одинаковыми, потому что, заявляя, я упоминаю в качестве диапазона для Det_faults : Faults_set.Set_init_type(1..12); Но я хотел знать, есть ли какие-либо различия.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018
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).

...