Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Директивы компилятора. Условная компиляция. 
:(
    Опции темы
Fedor
Дата 20.4.2005, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Директивы и символы условной компиляции
----------------------------------------
Условная компиляция основана на оценке условных символов.

Директива условного символа DEFINE
-----------------------------------
Определяет условный символ с заданным именем

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

Определенный символ существует до конца компиляции, или пока он не будет убран директивой $UNDEF Имя.
Директива {$DEFINE Имя} не даст эффекта, если символ с именем "Имя" уже был определен.

Условная директива компиляции ELSE
 -----------------------------------
Компилирует или пропускает исходный текст, следующий за директивой $ELSE.

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

Внутри исходного текста, разделенного директивами $IFDEF (или $IFNDEF) и $ENDIF, $ELSE компилирует текст, следующий за $ELSE, если условие $IFDEF (или $IFNDEF) не выполняется.
Если условие $IFDEF (или $IFNDEF) выполнено, то $ELSE игнорирует исходный текст, следующий за словом $ELSE.

Условная директива компиляции ENDIF
------------------------------------
Завершает блок условной компиляции, начинающийся с последней условной директивы $IFxxx.

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

Условная директива компиляции IFDEF
------------------------------------
Компилирует текст, следующий за директивой IFDEF, если символ с именем "Имя" определен.

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

Условная директива компиляции IFNDEF
 -------------------------------------
Компилирует текст, следующий за директивой IFNDEF, если символ с именем "Имя" НЕ определен.

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

Условная директива компиляции IFOPT
------------------------------------
Компилирует текст, следующий за директивой IFOPT, если заданный переключатель находится в определенном состоянии.

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

Параметр "Переключатель" включает имя переключателя, сопровождаемое знаком "+" или "-":
 "Переключатель+" означает, что переключатель включен
 "Переключатель-" означает, что переключатель выключен

Директива условного символа UNDEF
----------------------------------
Убирает предварительно определенный условный символ с именем "Имя"

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

Символ забывается до конца компиляции или пока он вновь не будет объявлен с помощью директивы $DEFINE.
Директива {$UNDEF Имя} не даст эффекта, если символ с именем "Имя" уже убран.

Символы условной компиляции
Символ     Значение
CPU86      Процессор принадлежит семье 80x86
CPU87      Присутствует ли сопроцессор 80x87 во время компиляции
DPMI       Указывает, что компиляция идет в защищенном режиме DOS
MSDOS      Указывает, что компиляция идет в реальном режиме DOS
VER70      Номер версии Turbo Pascal
WINDOWS    Указывает, что компиляция идет в среде Windows

Конструкции условной компиляции
 --------------------------------
Вы можете использовать директивы условной компиляции, чтобы генерировать различный код из одного и того же исходного текста, в зависимости от состояния условных символов.
Вы можете использовать две конструкции:
  - {$IFxxx} ... {$ENDIF}
  - {$IFxxx} ... {$ELSE} ... {$ENDIF}


 IF ... ENDIF:
Конструкция $IFxxx ... $ENDIF заставляет компилироваться исходный текст между $IFxxx и $ENDIF только в том случае, если условие, определенное в директиве $IFxxx истинно.
Если условие ложно, то исходный текст между двумя директивами игнорируется.


 IF ... ELSE ... ENDIF:
Конструкция $IFxxx ... $ELSE ... $ENDIF
заставляет компилироваться
 - Исходный текст между $IFxxx и $ELSE, если условие $IFxxx истинно,
 - Исходный текст между $ELSE и $ENDIF, если условие $IFxxx ложно.

Условные конструкции могут иметь 16 уровней вложений.

В каждом исходном файле должно быть равное количество директив $IFxxx и $ENDIF.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.