Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Borland Pascal / Интегрированная среда для DOS /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Условная компиляция - Программирование от RIN.RU
Условная компиляция

Предопределенные идентификаторы


Кроме определяемых вами идентификаторов вы можете также проверять отдельные идентификаторы, определяемые компилятором:


Предопределенные условные идентификаторы
ИдентификаторПоказывает
CPU86 Данная версия Borland Pascal предназначена для семейства процессоров 80х86.
CPU87Присутствует арифметический сопроцессор 80х87.
DPMIДанная версия предназначена для операционной среды защищенного режима DOS. При создании приложений для защищенного режима DOS данный идентификатор доступен для BP.EXE.
MSDOSДанная версия предназначена для операционной системы MS-DOS. Данный идентификатор доступен в BP.EXE только при создании приложений DOS реального или защищенного режима и в TURBO.EXE.
VER70Данная версия является версией 7.0 компилятора.
WINDOWSДанная версия предназначена для операционной среды Windows. Данный идентификатор доступен в BP.EXE и в BPW.EXE, когда целевой платформой является Windows.



Идентификаторы IFxxx, ELSE и ENDIF


Смысл условных директив в том, что если определен или нет конкретный идентификатор либо если установлен или нет конкретный параметр, вы можете выбирать для компиляции некоторые части исходного кода. Они имеют следующий общий формат, где IFxxx - это директивы IFDEF, INDEF или IFOPT, за которыми следует соответствующий аргумент, а "исходный код" - любое количество исходного кода Паскаля.


{$IFxxx}
исходный код
{$ENDIF}


Если выражение в директиве IFxxx принимает значение True, то "исходный код" компилируется; в противном случае он игнорируется и интерпретируется как обычный комментарий в программе.


Часто у вас имеются альтернативные фрагменты кода. Если выражение принимает значение True, то компилируется один фрагмент кода, а если False - другой. Компилятор позволяет сделать это с помощью директивы $ELSE:


{$IFxxx}
исходный код A
{$ELSE}
исходный код B
{$ENDIF}


Если выражение в IFxxx равно True, то компилируется "исходный код A", в противном случае компилируется "исходный код B".


Все директивы IFxxx должны завершаться с одном исходном файле. Это означает, что они не могут начинаться в одном исходном файле и заканчиваться в другом. Однако, в директиве IFxxx может указываться включаемый файл:


{$IFxxx}
{$I file1.pas}
{$ELSE}
{$I file2.pas}
{$ENDIF}


Таким образом, на основе некоторого условия вы можете выбирать альтернативные включаемые файлы


Допускается использовать вложенные конструкции IFxxx..ENDIF, так что вы можете записать, например, следующее:


{$IFxxx} { первая директива IF }
.
.
.
{$IFxxx} { первая директива IF }
.
.
.


{$ENDIF} { завершает вторую директиву IF }
.
.
.
{$ENDIF} { завершает первую директиву IF }


Директивы IFDEF и IFNDEF


Директивы IFDEF и IFNDEF позволяют вам условно компилировать код на основе определения или неопределения некоторых идентификаторов.


Директивы IFDEF и IFNDEF обычно используются для включения в компилируемый код отладочной информации. Например, если вы поместите в начало каждого модуля следующий код:


{$IFDEF debug}
{$D+,L+}
{$ELSE}
{$D-,L-}
{$ENDIF}


а в начало программы следующую директиву:


{$DEFINE debug}


и компилируете свою программу, для использования с Турбо отладчиком генерируется полная отладочная информация. Аналогично, вы можете иметь фрагменты кода, компилируемые только при отладке. В этом случае можно записать:


{$IFDEF debug}
исходный код
{$ENDIF}


где "исходный код" компилируется только в том случае, если в данной точке определен идентификатор debug.


Директива IFOPT


Иногда включить или исключить код желательно в зависимости от того, какой выбран параметр компилятора (проверка диапазона, проверка ввода-вывода и т.д.). Вы можете сделать это с помощью директивы IFOPT, которая имеет две формы:


{$IFOPT x+}
и
{$IFOPT x-}


где x - один из параметров компилятора. При использовании первой формы содержащийся ниже код будет компилироваться, если параметр компилятора в данный момент разрешен; при использовании второй формы код компилируется при запрещении параметра. Например, чтобы выбрать тип данных для списка переменных на основе того, разрешена или нет поддержка сопроцессора 80х87, можно использовать следующий исходный код:


var
{$IFOPT N+}
Radius,Circ,Area: Double;
{$ELSE}
Radius,Circ,Area: Real;
{$ENDIF}

<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Параметры запуска

Установка параметров запуска

Выход из IDE

Запись и редакция кода

Работа с файлами

Компиляция и выполнение

Оптимизация кода

Просмотр исходного кода

Просмотр объектов

Глобальные идентификаторы

Идентификаторы в коде

Функции ObjectBrowser

Настройка меню Tools

Окно Messages

Kонфигурации IDE

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь