Директивы компилятора
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 | Разрешить расширенный синтаксис. |