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. И наоборот, функции, объявленные в секции интерфейса не должны быть предварительно объявлены в секции реализации. Так как они уже были объявлены. |