Как в 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
|
Разрешить использовать исключения.
|
Таким образом, следующий пример:
{$MODE TP}
{$MODESWITCH OUT}
Включит поддержку параметра out в режиме TP. Это эквивалентно следующей записи:
{$MODE TP}
{$MODESWITCH OUT+}
|