Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Паскаль / tp3 / tp3 / 21

.doc
Скачиваний:
27
Добавлен:
10.12.2013
Размер:
95.23 Кб
Скачать

Условные идентификаторы следуют точно таким же правилам, что и идентификаторы Паскаля: они должны начинаться буквой, за которой следуют сочетания букв, цифр, подчеркиваний. Они могут иметь любую длину, но только первые 63 символа являются значащими.

Условные идентификаторы и идентификаторы Паскаля не имеют друг с другом никакой связи. На условные идентификаторы не могут осуществляться ссылки в действующей программе, а на идентификаторы программы нельзя осуществлять ссылки в условных директивах. Например, конструкция:

const

Debug = True;

begin

{$IFDEF Debug}

Writeln('Debug is on');

{$ENDIF}

end;

не приведет к компиляции оператора Writeln, также как и конструкция:

{$DEFINE Debug}

begin

if Debug then writeln ('Debug is on');

end;

приведет к ошибке в операторе IF из-за неизвестного идентификатора.

В Турбо Паскале определены следующие стандартные идентификаторы:

VER10

Всегда определен, указывая, что данная версия является версией 1.0 Турбо Паскаля для Windows. Другие версии будут определять собственные соответствующие символы версий, например, символ VER20 для версии 2.0 и т.д.

MSDOS

Всегда определен, указывая, что данная операционная система является операционной системой DOS. Версии Турбо Паскаля для других операционных систем будут определять символьное имя для конкретной операционной системы.

CPU86

Всегда определен, указывая, что процессор принадлежит к семейству процессоров 80х86. Версии Турбо Паскаля для других процессоров будут определять символьное имя для конкретного процессора.

CPU87

Определен, если арифметический сопроцессор 8087 присутствует во время компиляции. Если конструкция:

{$IFDEF CPU87} {$N+} {$ELSE} {$N-} {$ENDIF}

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

Остальные условные идентификаторы могут устанавливаться перед компиляцией с помощью поля ввода ConditionalDefines (Условные определения) меню Options│Compiler (Параметры│Компилятор) интегрированной среды или параметра командной строки /D компилятора TPWC.

Директива DEFINE

Синтаксис: {$DEFINE имя}

Примечание: Директива $DEFINE определяет условный идентификатор данного имени. Идентификатор будет определенным для оставшейся части исходного компилируемого кода или до тех пор, пока он не появится в директиве {$UNDEFINE имя}. Директива {$DEFINE имя} не вызывает никаких действий, если "имя" уже определено.

Директива UNDEF

Синтаксис: {$UNDEF имя}

Примечание: Директива $UNDEF отменяет ранее определенный условный идентификатор. Для оставшейся части исходного компилируемого кода или до тех пор, пока он не появится в директиве {$DEFINE} идентификатор разопределяется (становится неопределенным). Директива {$UNDEF} имя не вызывает никакий действий если "имя" уже отменено.

Директива IFDEF

Синтаксис: {$IFDEF идентификатор}

Примечание: Директива IFDEF компилирует следующий за ней исходный текст, если имя "идентификатор" определено.

Директива IFNDEF

Синтаксис: {$IFNDEF идентификатор}

Примечание: Директива IFNDEF компилирует следующий за ней исходный текст, если имя "идентификатор" не определено.

Директива IFOPT

Синтаксис: {$IFOPT переключатель}

Примечание: Директива IFOPT компилирует следующий исходный текст, если "переключатель" находится в данное время в указанном состоянии. Переключатель (директива) состоит из имени директивы-переключателя, за которым следует знак плюс (+) или знак минус (-). Например, конструкция:

{$IFOPT N+}

type real = extended;

{$ENDIF}

скомпилирует описание типа, если директива $N является в данное время действующей.

Директива ELSE

Синтаксис: {$ELSE}

Примечание: Директива ELSE приводит к компиляции или игнорированию исходного текста, ограниченного последним {$IFxxx} и следующим {$ENDIF}.

Директива ENDIF

Синтаксис: {$ENDIF}

Примечание: Директива ENDIF заканчивает условную компиляцию, начатую последней директивой {$IFxxx}.

Соседние файлы в папке tp3