Инструменты пользователя

Инструменты сайта


remobject_pascal_script:direktivy_kompiljatora

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

remobject_pascal_script:direktivy_kompiljatora [2018/04/02 11:04] (текущий)
jurist23rus создано
Строка 1: Строка 1:
 +====== 15. Директивы компилятора ======
 +
 +Директивы влияют на процесс компиляции. Директива заключается в фигурные скобки и начинается со знака ''​$''​. Движок поддерживает несколько директив:​ ''​$I ($INCLUDE), $DEFINE, $UNDEF, $IFDEF, $IFNDEF, $ELSE, $ENDIF''​.
 +
 +===== Директива $I: включение кода модуля =====
 +
 +Наиболее часто используемая директива,​ которая включает в текущий модуль код другого модуля.
 +''​{$I MyUtils}''​
 +
 +<code delphi>
 +
 +{$I Мой Модуль}
 +
 +procedure Form_Create;​
 +begin
 +end;
 +</​code>​
 +
 +В результате включения модулей исходные коды объединяются,​ и получается один большой модуль. Из этого следует,​ что в модулях не должны дублироваться имена идентификаторов (переменных,​ констант,​ подпрограмм и т. д.).
 +
 +===== Условная компиляция =====
 +
 +Остальные директивы позволяют компилировать разные участки кода в зависимости от условия. Таким условием является проверка – определен ли символ условной компиляции или нет. Символ условной компиляции задается директивой ''​$DEFINE'':​
 +
 +<code delphi>
 +{$DEFINE ABC}
 +{$DEFINE Проверка}
 +{$DEFINE 12A}
 +</​code>​
 +
 +Символ условной компиляции может состоять почти из любых символов. Проверка осуществляется директивами $IFDEF, ​
 +$IFNDEF:
 +<code delphi>
 +{$IFDEF ABC}
 +// Код А
 +{$ELSE}
 +// Код Б
 +{$ENDIF}
 +
 +{$IFNDEF 12A}
 +// Код В
 +{$NDIF}
 +</​code>​
 +Код А будет скомпилирован только в том случае,​ если определен символ ABC, в противном случае будет скомпилирован код Б. Код В будет скомпилирован,​ если символ 12A не определен.
 +
 +Директива $UNDEF снимает определение символа,​ т. е. символ становится неопределенным.
 +В DataExpress есть два предопределенных символа – WINDOWS и LINUX. Таким образом,​ можно компилировать специфические для каждой из систем участки кода.
 +<code delphi>
 +{$IFDEF LINUX}
 +// Специфичный для Linux код
 +{$ELSE}
 +// Специфичный для Windows код
 +{$ENDIF}
 +</​code>​
  
remobject_pascal_script/direktivy_kompiljatora.txt · Последние изменения: 2018/04/02 11:04 — jurist23rus