16.4 Зависимость модулей |
Вверх Предыдущий Следующий |
Когда программа использует модуль (скажем unitA ), а этот модуль тоже использует модуль (скажем unitB) , то программа косвенно зависит также от unitB. Это означает, что компилятор должен иметь доступ к unitB при попытке компиляции программы. Если модуль не присутствует во время компиляции, то возникает ошибка. Обратите внимание, что косвенная зависимость программы ещё не определяет что идентификаторы модуля являются доступными. Для того, чтобы иметь доступ к идентификаторам модуля, модуль должен находиться в пункте uses программы или модуля, где необходимы эти идентификаторы. Модули могут быть взаимно зависимы, то есть они могут ссылаться друг на друга при использовании (uses). Это допускается, при условии, что по крайней мере одна из ссылок сделана в разделе implementation (реализации) модуля. Это справедливо для взаимозависимых модулей (косвенным образом). Компилятор выдаст ошибку, если оба модуля используют (uses) друг друга в разделе interface. Следующее объявление не допускается: Unit UnitA; interface Uses UnitB; implementation end.
Unit UnitB interface Uses UnitA; implementation end. А это, разрешено Unit UnitA; interface Uses UnitB; implementation end.
Unit UnitB implementation Uses UnitA; end. Поскольку UnitB использует UnitA только в разделе реализации. В общем, плохая идея, иметь взаимозависимые модули, даже если это только в разделах реализации!!! (это, по возможности, следует избегать) |