Директивы

Директивы используются для задания параметров трансляции, а так же при описании программ. Единственной стандартной директивой языка Паскаль является директива опережающего описания Forward.

Так как имена в Паскале просматриваются последовательно, то при обращении одной программы к другой последняя должна быть описана ранее вызывающей подпрограммы. Если этого сделать нельзя, например, при перекрестных ссылках, то используется директива Forward.

При этом в начале раздела описывается только заголовок подпрограммы, а сама подпрограмма записывается далее через несколько блоков, но только с указанием в заголовке его имени, например:

Procedure Q(x:T); Forward;

Procedure P(y:T);

Begin

Q(A);

end;

Procedure Q;

Begin

P(B);

end;

Хотя по прямому назначению эта директива используется очень редко, но для больших программ, составляющих сотни страниц, удобно в самом начале компактно собрать все названия подпрограмм с помощью директивы опережающего описания.

В Турбо-Паскале есть еще несколько директив, относящимся к подпрограммам. Если подпрограмма или группа подпрограмм разработана вне системы Турбо-Паскаль, например, на языке Ассемблер или Си, а их объектный код находится в объектном файле, то такую подпрограмму можно подключить с помощью директивы External, дополнительно задав директиву компилятора $L с именем OBJ-файла:

Procedure SqRoots(A,B,C:word); external;

{$L ROOTS.OBJ}

Для обеспечения корректности такого подключения необходимо соблюдать определенные межъязыковые соглашения о связях.

Другим вариантом создания машинного кода подпрограмм с непосредственным указанием машинных команд является директива Inline. Так же можно составлять программы с использованием мнемонических или ассемблерных обозначений команд, используя директиву Assembler.

Для подпрограммы допускается указание типа вызова процедуры: дальний (межсегментный) или ближний (внутри одного сегмента), задаваемые соответственно словами Far и Near. Они эквивалентны директивам компилятора {$F+} и {$F‑}.

Подпрограмма может вызываться не только явно в тексте программы, но и по определенному событию, – прерыванию. В этом случае используется директива Interrupt, служащая для определения процедур прерываний. Такие процедуры должны использовать только дальний вызов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: