Модули, которые использует ваша программа, уже оттранслированы и хранятся, как машинный код, а не как исходный код на Паскале, поскольку они не являются включаемыми файлами. Даже интерфейсная секция хранится в специальном двоичном формате таблицы идентификаторов, используемом в Borland Pascal. Более того, определенные стандартные модули хранятся в специальном файле (TURBO.TPL, TPW.TPL или TPP.TPL) и автоматически загружаются в память вместе с Borland Pascal.
В результате использование одного или нескольких модулей очень незначительно увеличивает время компиляции вашей программы (обычно менее, чем на секунду).
Фактически, если модуль скомпилирован, его использование сохраняет вам время при перекомпиляции. Поскольку компилятор не перекомпилирует модуль, пока он не изменяется, использование модулей в программе ускорит процесс ее построения.
Как указывалось ранее, для использования специального модуля или набора модулей необходимо в начале программы поместить оператор uses, после которого указать список имен тех модулей, которые будут использоваться. Имена их должны разделяться запятыми:
program MyProg; uses thisUnit, thatUnit, theOtherUnit;
Когда компилятор встречает такой оператор uses, он прибавляет информацию из секции интерфейса каждого модуля к таблице идентификаторов и присоединяет машинный код, представленный в секции реализации, к самой программе.
Модули присоединяются к таблице идентификаторов в указанном порядке. Порядок модулей в операторе uses значения не имеет. Если модуль thisUnit использует thatUnit или наоборот, вы можете описать их в любом порядке, а компилятор определит, какой модуль нужно скомпоновать с программой MyProg первым. Фактически, если модуль thisUnit использует thatUnit, но MyProg не вызывает непосредственно ни одну из подпрограмм в модуле thatUnit, вы можете "скрыть" подпрограммы модуля thatUnit, опустив его в операторе uses:
unit thisUnit; uses thatUnit; . . . program MyProg; uses thisUnit, theOtherUnit; . . .
В этом примере модуль thisUnit может вызывать любую подпрограмму модуля thatUnit, а программа MyProg может вызывать любую из подпрограмм модуля thisUnit или theOtherUnit. Однако, программа MyProg не может вызывать подпрограммы модуля thatUnit, поскольку thatUnit не указывается в операторе uses программы MyProg.
Если в программе не указан оператор uses, Borland Pascal в любом случае присоединит стандартный модуль System. Этот модуль обеспечит выполнение некоторых стандартных подпрограмм Borland Pascal, а также нескольких подпрограмм, специфических для Borland Pascal.
8 8 8
| |