1.3.22. $MODESWITCH : Выбор функций режима

На верх  Назад  Вперёд

Как в FPC 2.3.1, директива {$MODESWITCH} выбирает некоторые функции режима, который был выбран директивой {$MODE }.

Она может быть использована для подключения функций, которые недоступны в текущем режиме. Например, вы хотите программировать в режиме TP, но в то же время хотите использовать параметр 'Out', который доступен только в режиме Delphi.

Директива {$MODESWITCH } позволяет активировать или деактивировать некоторые специфические функции режима, не изменяя текущий режим компилятора.

Это глобальный переключатель, поэтому его можно использовать везде, где применяется переключатель {$MODE}.

Синтаксис следующий:

{$MODESWITCH XXX}
{$MODESWITCH XXX+}
{$MODESWITCH XXX-}

Первые два случая включают функцию XXX, последний – выключает. Функция XXX может быть одним из следующих значений:

CLASS

Использовать классы Object Pascal.

OBJPAS

Автоматически подключать модуль ObjPas.

RESULT

Включить идентификатор Result для результата в функциях.

PCHARTOSTRING

Разрешить автоматическое преобразование строк с нулевым окончанием в строки Pascal.

CVAR

Разрешить использование ключевого слова CVAR.

NESTEDCOMMENTS

Разрешить использование вложенных комментариев.

CLASSICPROCVARS

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

MACPROCVARS

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

REPEATFORWARD

Объявления Implementation и Forward должны полностью совпадать.

POINTERTOPROCVAR

Разрешить «тихое» преобразование указателей в процедурные переменные.

AUTODEREF

Автоматическое (тихое) разыменование типизированных указателей.

INITFINAL

Разрешить использование Initialization и Finalization.

POINTERARITHMETICS

Разрешить использование арифметических операций с указателями.

ANSISTRINGS

Разрешить использование ansistrings.

OUT

Разрешить использовать параметр типа out.

DEFAULTPARAMETERS

Разрешить использовать по умолчанию значения параметров.

HINTDIRECTIVE

Поддерживать директивы-подсказки (deprecated, platform и т.п.)

DUPLICATELOCALS

Разрешить локальным переменным методов классы иметь такие же имена, что и имена свойств класса.

PROPERTIES

Разрешить использовать глобальные свойства.

ALLOWINLINE

Разрешить встроенные процедуры.

EXCEPTIONS

Разрешить использовать исключения.

ADVANCEDRECORDS

Разрешить использование расширенных записей (т.е. записей с методами).

UNICODESTRINGS

Тип string по умолчанию является строкой unicode.

TYPEHELPERS

Разрешить использование помощников типа.

CBLOCKS

C тип блоков.

ISOIO

Ввод/вывод в соответствии с требованиями ISO pascal.

ISOPROGRAMPARAS

Параметры программы согласно требованиям ISO pascal.

ISOMOD

Операция mod согласно требованиям ISO pascal.

ISOUNARYMINUS

Унарный минус, как требуется ISO pascal.

Таким образом, следующий пример:

{$MODE TP}
{$MODESWITCH OUT}

Включит поддержку параметра out в режиме TP. Это эквивалентно следующей записи:

{$MODE TP}
{$MODESWITCH OUT+}