Ада-95. Компилятор GNAT

       

Раздельная компиляция


В предыдущем примере, если будет произведено какое-нибудь изменение кода, то обе процедуры должны быть переданы компилятору (поскольку обе находятся в одном файле с исходным текстом).

Мы можем разделить эти две компоненты, и поместить их в отдельные файлы, оставляя без изменения ограничения области видимости для процедуры Display_Values.

Это несколько похоже на директиву #include, используемую в языке Си, но, в языке Ада, теперь оба файла становятся независимыми компилируемыми модулями.

В первом файле:

with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure Ive_Got_A_Procedure is

X : Integer := 6; Y : Integer := 5;

procedure Display_Values(Number : Integer) is separate;

begin

Display_Values(X); Display_Values(Y); end Ive_Got_A_Procedure;

Во втором файле:

separate(Ive_Got_A_Procedure) -- примечание! нет завершайщего символа -- точки с запятой

procedure Display_Values(Number : Integer) is

begin

Put(Number); New_Line; end Display_Values;

Выделенный в самостоятельный файл (и ставший отдельно компилируемым модулем), код - идентичен тому, что было в предыдущей версии. Однако теперь, если будет изменена только внутренняя подпрограмма, то только она должна быть подвергнута перекомпиляции компилятором. Это также позволяет разделить программу на несколько частей, что может облегчить ее понимание.



Содержание раздела