PascalABC.NET

Директивы компилятора

Директивы компилятора - это специальные команды компилятору в ходе компиляции, записанные в тексте программы внутри последовательности {$ ... }. Фигурные скобки обозначают комментарий, но наличие знака $ после { говорит о том, что внутри комментария располагается директива компилятора.

Общий вид директивы компилятора:

{$ИмяДирективы параметры}

Список директив компилятора

{$apptype <тип приложения>} - задание типа приложения (windows/console).

{$reference <имя файла>} - подключение библиотеки.

{$gendoc <параметр>} -генерация документации в XML формате. Параметры: true, false.

{$mainresource <имя файла>} - подключение .res файла в качестве неуправляемого ресурса

{$resource <имя файла>} - подключение файла в качестве управляемого ресурса

{$region <имя региона>} - начало региона (используется в редакторе в режиме сворачивания кода

{$endregion} - конец региона

{$product <название продукта>} - название продукта

{$version <версия продукта>} - версия продукта

{$company <компания>} - компания

{$copyright <копирайт>} - копирайт

{$trademark <торговая марка>} - торговая марка

{$include <имя файла>} - включение в текст программы содержимого указанного файла.

{$define <идентификатор>} - определение имени, используемого в директивах $ifdef, $ifndef.

{$undef <идентификатор>} - исключение имени, используется для отмены действия директивы $define.

{$ifdef <идентификатор>} - начало блока условной компиляции (проверяется условие: "идентификатор определен").

{$ifndef <идентификатор>} - начало блока условной компиляции (проверяется условие: "идентификатор не определен").

{$else} - директива "иначе" в блоке условной компиляции.

{$endif} - завершение блока условной компиляции.

{$faststrings} - строки с быстрым доступом к символам на запись, но со ссылочной семантикой.

{$string_nullbased+} - включение строк, индексируемых с 0.

{$string_nullbased-} - выключение строк, индексируемых с 0.

Директивы $ifdef, $ifndef совместно с директивами $else и $endif управлют условной компиляцией частей исходного файла. Каждой директиве $ifdef, $ifndef должна соответствовать завершающая ее директива $endif. Между директивами $ifdef, $ifndef и $endif допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы $else.

Пример. Использование директив условной компиляции.

{$define DEBUG}
begin
  {$ifndef DEBUG}
    writeln('Имя DEBUG не определено');
  {$else}
    writeln('Имя DEBUG определено');
  {$endif}
end.