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

FPC поддерживает директивы компилятора в файлах с исходным текстом. Их набор отличается от набора, используемого в среде старого Turbo Pascal, хотя некоторые директивы поддерживаются для обеспечения совместимости. Все директивы можно условно разделить на две группы – локальные и глобальные. Локальные действуют с того места, где они были указаны, в то время как глобальные оказывают влияние на компиляцию всего кода.

Многие директивы-переключатели имеют краткую и длинную форму написания. Для длинных форм символы “+” и “-”, включающие/отключающие опцию, могут заменяться на ключевые слова ON или OFF

Таким образом, {$I+} эквивалентно {$IOCHECKS ON} или {$IOCHECKS +}, а {$C-} эквивалентно {$ASSERTIONS OFF} или {$ASSERTIONS -}

Длинные формы написания директив совпадают с их аналогами в Delphi.

Глобальные директивы

Директива

Действие

Короткая Длинная
$APPTYPE XXX Выбор типа приложения. XXX=

  • Console – консольное.
  • GUI – графическое.
$CALLING XXX Соглашение по типам вызова. XXX=

  • CDecl  -  как у компилятора C.
  • CppDecl  – как у компилятора C++.
  • FPCCall – от ранних версий FPC.
  • Register – регистровый.
  • StdCall – как в Windows.
  • SafeCall – безопасный, от COM.
$D $DEBUGINFO Включить в исполняемый файл информацию от отладчика.
$E Эмуляция математического сопроцессора.
$L $LOCALSYMBOLS Локальные символы.

Игнорируется компилятором.

$INCLUDEPATH XXX Пути к включаемым файлам. XXX – пути, разделенные точками с запятой.
$OBJECTPATH XXX Пути к объектным файлам. XXX – пути, разделенные точками с запятой.
$LIBRARYPATH XXX Пути к библиотекам. XXX – пути, разделенные точками с запятой.
$UNITPATH XXX Пути к модулям. XXX – пути, разделенные точками с запятой.
$MEMORY SS, HS Задать размеры памяти:

  • SS – для стека.
  • HS – для кучи.
$MODE XXX Режим компилятора совместим с. XXX=

  • Default – режим по умолчанию.
  • Delphi.
  • TP – Turbo Pascal.
  • FPC – FreePascal.
  • ObjFPC – FPC с объектами.
  • GPC – GNU Pascal.
$SMARTLINK Разумная компиляция. Используется то, к чему есть фактическое обращение.
$S Проверка стека на переполнение.
$VERSION XXX Версия DLL. XXX – номер версии.
$W $STACKFRAMES Генерировать кадры стека для каждой процедуры или функции..
$X $EXTENDEDSYNTAX Разрешить расширенный синтаксис.
$Y $REFERENCEINFO Ввести ссылочную информацию браузера.

Локальные директивы

Директива

Действие

Короткая Длинная
$ASMMODE XXX Выбор типа ассемблера. XXX=

  • att  – синтаксис AT&T,
  • intel – синтаксис Intel,
  • direct – прямая вставка.
$C $ASSERTIONS Поддержка инструкций Assert.
$CALLING XXX Соглашение по типам вызова. XXX=

  • CDecl  -  как для C.
  • CppDecl  – как для C++.
  • OldFPCCall – ранние версии FPC.
  • Register – регистровый.
  • StdCall – как в Windows.
  • SafCall – безопасный, от COM.
$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=

  • Date – дата.
  • FPCTargetCPU – процессор.
  • FPCTargetOS – ОС.
  • FPCVersion – версия FPC.
  • File –имя файла.
  • Line – номер строки.
  • Time – текущее время.
$L $LINK имя Связь с объектным файлом.
$LINKLIB      имя Связь с библиотекой.
$M $TYPEINFO Информация о RTL.
$MACRO Поддержка макросов в стиля языка C.
$MAXFPUREGISTER XXX Установить XXX FPU регистров.
$MESSAGE текст Генерировать сообщение.
$MMX Поддержка технологии MMX.
$OUTPUT_FORMAT XXX Выходной формат компилятора. XXX=

  • AS – ассемблер AT&T.
  • ASW- ассемблер AT&T Win32.
  • MASM – ассемблерMASM.
  • TASM – ассемблер TASM.
$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 Разрешить расширенный синтаксис.
TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong

Copyright © 2009-2010 Программирование на паскале.