Директивы компилятора
FPC поддерживает директивы компилятора в файлах с исходным текстом. Их набор отличается от набора, используемого в среде старого Turbo Pascal, хотя некоторые директивы поддерживаются для обеспечения совместимости. Все директивы можно условно разделить на две группы – локальные и глобальные. Локальные действуют с того места, где они были указаны, в то время как глобальные оказывают влияние на компиляцию всего кода.
Многие директивы-переключатели имеют краткую и длинную форму написания. Для длинных форм символы “+” и “-”, включающие/отключающие опцию, могут заменяться на ключевые слова ON или OFF
Таким образом, {$I+} эквивалентно {$IOCHECKS ON} или {$IOCHECKS +}, а {$C-} эквивалентно {$ASSERTIONS OFF} или {$ASSERTIONS -}
Длинные формы написания директив совпадают с их аналогами в Delphi.
Глобальные директивы
|
Директива |
Действие |
|
| Короткая | Длинная | |
| $APPTYPE XXX | Выбор типа приложения. XXX=
|
|
| $CALLING XXX | Соглашение по типам вызова. XXX=
|
|
| $D | $DEBUGINFO | Включить в исполняемый файл информацию от отладчика. |
| $E | Эмуляция математического сопроцессора. | |
| $L | $LOCALSYMBOLS | Локальные символы.
Игнорируется компилятором. |
| $INCLUDEPATH XXX | Пути к включаемым файлам. XXX – пути, разделенные точками с запятой. | |
| $OBJECTPATH XXX | Пути к объектным файлам. XXX – пути, разделенные точками с запятой. | |
| $LIBRARYPATH XXX | Пути к библиотекам. XXX – пути, разделенные точками с запятой. | |
| $UNITPATH XXX | Пути к модулям. XXX – пути, разделенные точками с запятой. | |
| $MEMORY SS, HS | Задать размеры памяти:
|
|
| $MODE XXX | Режим компилятора совместим с. XXX=
|
|
| $SMARTLINK | Разумная компиляция. Используется то, к чему есть фактическое обращение. | |
| $S | Проверка стека на переполнение. | |
| $VERSION XXX | Версия DLL. XXX – номер версии. | |
| $W | $STACKFRAMES | Генерировать кадры стека для каждой процедуры или функции.. |
| $X | $EXTENDEDSYNTAX | Разрешить расширенный синтаксис. |
| $Y | $REFERENCEINFO | Ввести ссылочную информацию браузера. |
Локальные директивы
|
Директива |
Действие |
|
| Короткая | Длинная | |
| $ASMMODE XXX | Выбор типа ассемблера. XXX=
|
|
| $C | $ASSERTIONS | Поддержка инструкций Assert. |
| $CALLING XXX | Соглашение по типам вызова. XXX=
|
|
| $COperators | Разрешает операции в стиле языка C. | |
| $DEFINE имя | Определить символ. | |
| $UNDEFINE имя | Отмена определения символа. | |
|
|
$ERROR текст | Сообщение об ошибке. |
|
|
$FATAL текст | Сообщение о фатальной ошибке. |
|
|
$NOTES | Разрешить сообщения-заметки. |
|
|
$NOTE текст | Сообщение-заметка. |
|
|
$WARNINGS | Разрешить предупреждения. |
|
|
$WARNING текст | Предупреждение. |
|
|
$HINTS |
Разрешить подсказки. |
|
|
$HINT текст |
Подсказка. |
|
|
$GOTO |
Поддержка Goto, Label. |
| $H | $LONGSTRINGS | Разрешить длинные строки. |
| $IF условие | Начать условную компиляцию, если условие выполнятся. | |
| $IFDEF условие | Начать условную компиляцию, если условие выполнятся. | |
| $IFNDEF условие | Начать условную компиляцию, если условие не выполнятся. | |
| $ENDIF | Завершить условную компиляцию. | |
| $ELSE текст | Переключить условную компиляцию.
Текст игноируется, это комментарий. |
|
| $IFOPT switch | Начать условную компиляцию, если switch имеет указанное значение. | |
| $INFO | Генерировать инфо-сообщение. | |
| $INLINE | Поддержка INLINE | |
|
$I |
$IOCHECKS | Проверка ввода/вывода |
| $I | $INCLUDE имя | Включить файл с заданным именем. |
| $I | $INCLUDE XXX | Включить информацию. XXX=
|
| $L | $LINK имя | Связь с объектным файлом. |
| $LINKLIB имя | Связь с библиотекой. | |
| $M | $TYPEINFO | Информация о RTL. |
| $MACRO | Поддержка макросов в стиля языка C. | |
| $MAXFPUREGISTER XXX | Установить XXX FPU регистров. | |
| $MESSAGE текст | Генерировать сообщение. | |
| $MMX | Поддержка технологии MMX. | |
| $OUTPUT_FORMAT XXX | Выходной формат компилятора. XXX=
|
|
| $P | $OPENSTRINGS | Использовать открытые строки. |
| $PACKENUM XXX | Минимальный размер в байтах для перечисляемого типа.
XXX равно 1, 2, 4, Normal (4). |
|
| $PACKRECORDS | Размещение элементов записей. | |
| $Q | $OVERFLOWCHECKS | Проверка переполнения. |
| $R | $RANGECHECKS | Проверка диапазона. |
| $SATURATION | Разрешить операцию насыщения. | |
| $SMARTLINK | Интеллектуальная компоновка. Компилируются только тот код, который используется. | |
| $STATIC | Разрешить ключевое слово Static. Это дает возможность для объекта использовать статические методы. | |
| $STOP | Прекращение компиляции с сообщением о фатальной ошибке. | |
| $T | $TYPEDADDRESS | Разрешить инструкцию адреса @. |
| $V | $VARSTRINGCHECKS | Проверка длины строк. |
| $WAIT | Ожидание нажатия клавиши Enter. | |
| $X | $EXTENDEDSYNTAX | Разрешить расширенный синтаксис. |