9. Компиляция и управление компиляцией
63
1) Директива не должна встречаться на последнем возможном (максимальном)
уровне вложения INCLUDE файлов;
2) Поиск любой внешней процедуры производится в указанном данной
директивой файле. Поэтому компилятор открывает для чтения указанный файл и
закрывает его, если произойдет одно из следующих событий:
*
встретит другую директиву LINK;
*
окончит компилирование;
*
начнет компиляцию другого сегмента (оверлея);
*
откроет файл для включения в текст программы (INCLUDE);
*
встретит директиву LINK без имени файла, т.е. (*$L*). Этим вынуждается
компилятор закрыть файл с внешними процедурами.
3) Если компилятор закроет файл с внешними процедурами и тогда появится
описание другой внешней процедуры, выдается ошибка.
9.3. Директивы условной компиляции
Идея условной компиляции состоит в том, что определенный фрагмент исходной
программы компилируется только в случае выполнения некоторого условия. Идея и
соответствующие механизмы хорошо известны программистам, имеющим опыт
работы на языке ассемблера или Turbo Pascal для компьютеров типа IBM-PC-XT/AT.
9.3.1. Директивы DEFINE и UNDEF
Директивы предназначены для определения и удаления идентификаторов
условной компиляции (ИУК) и имеют синтаксис:
{$define <идентификатор_условной_компиляции>}
{$undef <идентификатор_условной_компиляции>}
Одним из возможных условий компиляции программного фрагмента является
определение или неопределение ИУК - т.е. является или не является указанный
идентификатор идентификатором условной компиляции.
ИУК рассматриваются компилятором совершенно отдельно от остальных
идентификаторов в тексте программы. Поэтому ИУК может совпадать по написанию с
другим, нормальным идентификатором в программе.
Для компилятора UniPASCAL по умолчанию определен идентификатор условной
компиляции UniPas.
9.3.2. Директивы IFDEF, IFNDEF, IFOPT, ELSE и ENDIF
Условная компиляция осуществляется при помощи конструкции типа:
{$IFxxx <
условие
>}
  {
компилируемый в случае выполнения условия фрагмент программы
}
{$ENDIF}
или
{$IFxxx <
условие
>}
  {
компилируемый в случае выполнения условия фрагмент программы
}
{$ELSE}
  
  {
компилируемый в случае невыполнения условия фрагмент
}
{$ENDIF}
<<  <  GO  >  >>

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