global compiler directives/ru

From Lazarus wiki

Deutsch (de) English (en) français (fr) русский (ru)

Free Pascal поддерживает директивы компилятора директивы компилятора в исходном файле. В основном поддерживаются те же директивы, что и в Turbo Pascal, Delphi и Apple Pascal (Mac OS). Некоторые из них признаны только для совместимости и не имеют никакого эффекта.

Синтаксис

Общий:

  • {$mode} выбирает режим компилятора
  • {$modeSwitch} включает или выключает определенные функции режима

Конкретный:

  • {$extendedSyntax} позволяет использовать функции, как если бы они были процедурами (прим.перев.: т.е. результат вызова функции не обязан присваиваться переменной)
  • {$pointerMath}позволяет арифметические операции с указателями (начиная с FPC 2.6.0)
  • {$openStrings} или {$P} определяет, все ли стандартные параметры типа string считаются параметрами открытых строк; этот параметр действует только для коротких строк(ShortString), но не для ANSIString.
  • {$varPropSetter}

Генерация кода

  • {$codePage} определяет, какая кодовая страница используется программой
  • {$E} эмулирует сопроцессор
  • {$extension} определяет суффикс имени сгенерированного исполняемого файла
  • {$libPrefix} определяет префикс имени файла сгенерированной библиотеки
  • {$libSuffix} определяет суффикс имени файла сгенерированной библиотеки
  • {$memory} определяет размер используемой памяти
  • {$PascalMainName} определяет имя точки входа
  • {$PIC} позволяет позиционно-независимую генерацию кода
  • {$smartlink} определяет умное связывание
  • {$sysCalls} определяет правила вызова системных вызовов Amiga/MorphOS

Включение данных

  • {$debugInfo} или {$D} вставляет отладочную информацию GNU в сгенерированный код
  • {$referenceInfo} или {$Y} создает Delphi-совместимую информацию о браузере (пока поддерживается не полностью)

Пути

  • {$frameworkPath} (для Darwin)
  • {$includePath} определяет путь для включаемых файлов
  • {$libraryPath} определяет путь к файлам библиотеки
  • {$objectPath} задает путь для поиска объектных файлов
  • {$unitPath} определяет путь поиска для модулей

Целезависимые

Только Novell NetWare

  • {$copyright} вставляет информацию об авторских правах
  • {$screenName} определяет отображаемое имя приложения
  • {$threadName} задает имя потока

Только Palm OS и Garnet OS

  • {$appID} задает четырехсимвольный идентификатор приложения
  • {$appName} определяет название приложения

Windows-подобные системы

  • {$imageBase} указывает базовое местоположение образа DLL
  • {$minStackSize} устанавливает минимальный размер стека для исполняемого файла
  • {$maxStackSize} устанавливает максимальный размер стека для исполняемого файла
  • {$setPEFlags} устанавливает флаги PE в Windows
  • {$version} задает номер версии DLL

Разное

  • {$appType} задает тип программы (CONSOLE, GUI и т.д.)

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

  • {$profile} эта директива включает или выключает генерацию кода профилирования.

Игонорируемые

  • {$description}: введен для совместимости и с FPC 3.0.4 игнорируется
  • {$G} будет генерировать код 80286 с TP
  • {$localSymbols} или {$L} Этот параметр (не путать с локальной директивой связывания файла {$ L file}) распознается для совместимости с Turbo Pascal, но игнорируется.
  • {$N} распознается для совместимости с Turbo Pascal, но в остальном игнорируется, поскольку компилятор всегда использует сопроцессор для математических вычислений с плавающей точкой.
  • {$O} включает уровень 2 оптимизации. Это больше не распознается начиная с FPC 2.0.0. Используйте взамен {$optimization}.
  • {$weakPackageUnit} анализируется для совместимости с Delphi, но в противном случае игнорируется. Компилятор выдаст предупреждение при его обнаружении.

См. также

Directives, definitions and conditionals definitions
global compiler directives • local compiler directives

Conditional Compiler Options • Conditional compilation • Macros and Conditionals • Platform defines
$IF