Borland Pascal. Руководство пользователя

6cac1dc9

Как используются модули?


Модули, которые использует ваша программа, уже оттранслиро- ваны и хранятся, как машинный код, а не как исходный код на Пас- кале, поскольку они не являются включаемыми файлами. Даже интер- фейсная секция хранится в специальном двоичном формате таблицы идентификаторов, используемом в 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.



Содержание раздела