В зависимости от режима приводится в действие или отменяется генерирование кода проверки переполнения стека. При указании {$S+} компилятор генерирует в начале каждой процедуры или функции код, который проверяет, достаточное ли место в стеке выделено для локальных переменных. Если в стеке места недостаточно, то обращение к процедуре или функции, скомпилированное с указанием {$S+}, приводит к завершению работы программы, которая при этом выводит сообщение об ошибке времени выполнения. При указании {$S-} подобное обращение наиболее вероятно приведет к фатальной ошибке системы («зависанию»).
Режим проверки параметров строкового типа
Синтаксис: {$V+} или {$V-}
Режим по умолчанию: {$V+}
Тип: Локальный
Эквивалент меню: Options/Compiler/Var-String Checking
Ключ $V управляет проверкой типа при передаче строк в качестве параметров-переменных. В состоянии {$V+} выполняется строгая проверка типа, при которой требуется, чтобы формальный и фактический параметр имели идентичные строковые типы. В состоянии {$ V-} в качестве фактического параметра допускается использовать любую переменную строкового типа, даже если ее описанная длина не совпадает с длиной соответствующего формального параметра.
Директивы с параметрами
Включение файла для компиляции
Синтаксис: {$I ИмяФайла}
Тип: Локальный
Эквивалент меню: Options/Compiler/Include Directories
Данная директива сообщает компилятору о необходимости включить в компиляцию названный файл. Фактически файл вставляется в скомпилированный текст непосредственно за директивой {$I ИмяФайла}. Расширением по умолчанию для параметра «ИмяФайла» является «.PAS». Если параметр «ИмяФайла» не содержит в себе маршрута, то в дополнение к поиску файлов в текущем каталоге Турбо Паскаль осуществляет поиск его в каталогах, указанных в связанном с директивой меню (или в оглавлениях, указанных в опции /I автономного компилятора ТРС.ЕХЕ).
Турбо Паскаль допускает открытие в любой данный момент времени не более восьми входных файлов. Это значит, что для включаемых файлов допускается вложенность на глубину до восьми уровней. {545}
Имеются ограничения на использование включаемых файлов: директива включения файла не может быть указана в середине раздела операторов, а сам включаемый файл должен содержать завершенный блок предложений на Турбо Паскале.
Компоновка файла объектных кодов
Синтаксис: {$L ИмяФайла }
Тип: Локальный
Эквивалент меню: Options/Directories/Object Directories
Данная директива предписывает компилятору скомпоновать указанный файл с компилируемой программой или модулем. Директива $L используется для компоновки кода, написанного на языке ассемблера для подпрограмм, описанных как внешние (external). Указанный файл должен быть перемещаемым объектным файлом в формате INTEL (OBJ-формате). Расширением по умолчанию для параметра «ИмяФайла» является «.OBJ». Если в параметре «ИмяФайла» каталог не указан, то в дополнение к поиску файла в текущем каталоге Турбо Паскаль просматривает каталоги, указанные в меню.
Размеры выделяемой памяти
Синтаксис: {$М Стек, МинимумКучи, МаксимумКучи }
Значения по умолчанию: {$М 16384, 0, 655360}
Тип: Глобальный.
Эквивалент меню: Options/Compiler/Memory Sizes
Данная директива указывает параметры распределения памяти программы. Параметр «Стек» должен быть целым числом в диапазоне от 1024 до 65520, указывающим размер сегмента стека. «МинимумКучи» должно быть числом в диапазоне от 0 до 655360, а «МаксимумКучи» должно быть числом в диапазоне от «МинимумКучи» до 655360. Последние два параметра указывают соответственно минимальные и максимальные размеры динамически распределяемой области памяти.
Директива $М не оказывает влияния при использовании ее в модуле (UNIT).
Указание имени оверлейного модуля
Синтаксис: {$О ИмяМодуля}
Тип: Локальный
Указание в данной директиве имени модуля превращает этот модуль в оверлейный. При использовании данной директивы в модуле он игнорируется. При компиляции программы директива {$О ИмяМодуля} задает, какой из используемых программой модулей нужно поместить в файл с оверлеями (OVR-файл).
Эта директива должна указываться после директивы USES программы. При попытке использовать в качестве оверлейного модуль, который не был скомпилирован в состоянии {$О+}, Турбо Паскаль сообщит об ошибке. Любой модуль, имя которого указывается в параметре «ИмяМодуля», должен быть скомпилирован с установленными режимами {$O+,F+}. {546}
ПРИЛОЖЕНИЕ 3