Различия

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

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

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>