58
9.2. Параметрични директиви
9.2. Параметрични директиви
В настоящата реализация на UniPascal този вид директиви са две - за свързване с
външни процедури (LINK) и за включване на файл (INCLUDE). И двете директиви имат
един и същ вид - след буквата I или L в началото на директивата се очаква име на файл.
9.2.1. Включване на файл в текста на програмата (INCLUDE)
Директивата за включване на файл е (*$I filename *), като за компилатора файлът
с име FILENAME ще изглежда така, сякаш е поставен на мястото на директивата. Името
на файла, който ще се вмъква, се указва изцяло, т.е. компилаторът не поставя
автоматично суфикс на файловете, които се вмъкват. При използването на директивата
се налагат следните ограничения:
*
максимално ниво на влагане на такива директиви е четири. Под влагане се
разбира появяването на тази директива във файл, който също се вмъква;
*
тялото на всяка процедура или функция трябва да бъде изцяло в един файл;
*
всеки коментар трябва да се съдържа изцяло в един файл.
9.2.2. Указване на файл за свързване (LINK)
При свързване на външни процедури компилаторът трябва да знае от кой файл
да вземе генерирания от асемблера код. Това се указва чрез директивата (*$L filename
*). Както и при директивата за вмъкване, така и тук името на файла се указва изцяло,
т.е компилаторът не добавя никакъв суфикс по премълчаване. При използването на
директивата има следните ограничения:
1) Директивата не трябва да се среща на максималното ниво на влагане на
INCLUDE файлове.
2) Тъй като всяка външна процедура се търси във файла, указан чрез тази
директива, компилаторът отваря за четене указания файл и го затваря, ако:
*
срещне друга директива за свързване;
*
завърши компилация;
*
започне компилация на нов сегмент;
*
отвори файл за вмъкване;
*
срещне директивата за свързване без име на файл, т.е. (*$L*). Това е
направено, за да може да се накара компилаторът да затвори файла с
външните процедури.
3) Ако компилаторът е затворил файла с външните процедури, при поява на
описание на такава ще бъде съобщена грешка.
Препоръчва се след указването на файл за свързване да се опишат всички външни
процедури, които се използват в него, и след това този файл да бъде затворен. Ако в
програмата на две места се свързва един и същ файл с външни процедури, то техният
код ще бъде копиран два пъти в програмата, което ще доведе до загуба на памет, а в
някой случай и до грешки.
9.3. Условна компилация
В някои случаи е желателно да можете да указвате на компилатора, че дадени
части от програмата не трябва да се компилират. Най-прост пример за това е тестовият
печат. При него съществува и друга възможност - просто го изтривате, но това означава
да обходите цялата си програма и не е ясно дали няма да забравите нещо. А ако ви се
наложи отново да го включите, трябва да го пишете отново.
<<  <  GO  >  >>

Вернуться к началу сайта