14.7 Forward объявление подпрограмм

Вверх  Предыдущий  Следующий

Функция может быть объявлена без её последующей его реализации, если за ней следует forward. Реализация этой функции должна быть далее в этом же модуле. Эта функция может быть вызвана сразу после предварительного объявления, как если бы она была уже реализована. Ниже приведен пример предварительного объявления.

Program testforward;

 

Procedure First (n : longint); forward;

 

Procedure Second;

begin

WriteLn ();

First (1);

end;

 

Procedure First (n : longint);

begin

WriteLn (,n);

end;

 

begin

Second;

end.

Функция может быть предварительно объявлена только один раз. В модуле не нужно делать предварительное объявленной функции (или процедуры), которая уже была объявлена ​​в интерфейсной части этого модуля.Декларация интерфейса считается forward декларации. Компиляция следующего модуля сгенерирует ошибку:

Unit testforward;

 

interface

 

Procedure First (n : longint);

Procedure Second;

 

implementation

 

Procedure First (n : longint); forward; //!!!!!!

 

Procedure Second;

begin

WriteLn ('В процедуре second вызывается процедура first...');

First (1);

end;

 

Procedure First (n : longint);

begin

WriteLn ('Процедера First получила : ',n);

end;

 

end.

И наоборот, функции, объявленные в секции интерфейса не должны быть предварительно объявлены в секции реализации. Так как они уже были объявлены.