TURBO PASCAL |
Новости
|
Косвенные ссылки на модулиВ операторе uses в основной программе должны содержаться имена всех модулей, непосредственно или косвенно используемых ос- новной программой. Рассмотрим следующий пример: Program Prog; uses Unit1, Unit2 const a = b; begin end. end. unit Unit2; interface uses Unit1; const b = c; implementation end. unit Unit1; interface const c = 1; implementation const d = 2; end; В данном примере Unit12 непосредственно зависит от Unit1, а Prog непосредственно зависит от Unit2. Кроме того, Prog зависит косвенно от Unit1 (через Unit1), хотя ни один из описанных в Unit1 идентификаторов в Prog не доступен. Для компиляции программы компилятор должен иметь возможность находить все модули, от которых она прямо или косвенно зависит. Поэтому, для компиляции Prog компилятор должен иметь возможность найти и Unit1, и Unit2, иначе возникнет ошибка. Когда в интерфейсную часть модуля вносятся изменения, другие модули, использующие этот модуль, должны быть заново скомпилиро- ваны. При использовании команд Make или Build компилятор делает это автоматически. Однако, если изменения коснулись только секции реализации или секции инициализации, то другие модули, в которых используется этот модуль, перекомпилировать не нужно. В предыду- щем примере, если интерфейсная часть модуля Unit1 изменилась (например, с = 2), то модуль Unit2 нужно перекомпилировать. Изме- нение же секции реализации (например, d = 1) не требует переком- пиляции Unit2. При компиляции модуля в Borland Pascal на основе контрольной суммы интерфейсной секции вычисляется номер версии модуля. В пре- дыдущем примере при компиляции модуля Unit2 в скомпилированной версии модуля Unit2 сохраняется номер версии модуля Unit1. При компиляции основной программы номер версии модуля Unit1 сравнива- ется с номером версии, сохраненным в модуле Unit2. Если номера версий не совпадают, что свидетельствует об изменении в интер- фейсной части модуля Unit1 со времени последней компиляции модуля Unit2, компилятор, в зависимости от режима компиляции, выдает со- общение об ошибке или перекомпилирует модуль Unit2 (в зависимости от режима компиляции). |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |