ДИРЕКТИВЫ КОМПИЛЯТОРА
{$А+} или {$А-}
Позволяет переключаться между выравниванием переменных и типизированных констант на границу слова и на границу байта.
В состоянии {$А+} все переменные и типизированные константы, превышающие по размеру один байт, выравниваются по границе машинного слова (адреса с четными значениями).
В состоянии {$А-} никаких действий по выравниванию не предпринимается.
По умолчанию - {$А+}.
{$В + } или {$В-}
Осуществляет два различных вида генерации кода для булевых операций and и or.
В состоянии {$В+} компилятор генерирует код для полного вычисления булева выражения.
В состоянии {$В-} компилятор генерирует код для вычисления булева выражения по короткой схеме.
По умолчанию - {$В+}.
{$С атрибут ...}
Используется для управления атрибутами сегмента кода (только для Windows и защищенного режима).
Каждый сегмент кода в прикладной программе или библиотеке имеет набор атрибутов, которые определяют поведение кодового сегмента при его загрузке в память.
Директива влияет только на тот сегмент кода программного модуля (модуля, программы или библиотеки), в котором она размещена.
По умолчанию - {$С MOVEABLE DEMANDLOAD DISCARDABLE}.
{$D + } или {$D-}
Задает или отменяет генерацию информации для отладки. Если программа или модуль компилируются в состоянии {$D+}, встроенный отладчик Turbo
Pascal позволяет выполнять этот модуль по шагам и устанавливать в нем точки останова. По умолчанию - {$D+}.
{$DEFINE имя}
Определяет условный идентификатор с данным именем. Идентификатор будет определенным для оставшейся части исходного компилируемого кода или до тех пор, пока он не появится в директиве {$UNOEFINE имя}. Если имя уже определено, директива {$DEFINE имя} не вызывает никаких действий.
{$D текст}
Вставляет заданный текст в запись описания модуля в заголовке файла *.ехе или *.dll (только для Windows и защищенного режима).
{$ELSE}
Приводит к компиляции или игнорированию исходного текста, ограниченного последней директивой {$IFxxx} и следующей директивой {$ENDIF}.
{$Е + } или {$Е-}
Разрешает или запрещает компоновку с библиотекой исполняющей системы, которая будет эмулировать работу сопроцессора 8087 в случае его отсутствия.
В состоянии {$N+,E-} Turbo Pascal может создавать программу, которая используется только при наличии сопроцессора 8087. По умолчанию — {$Е-}.
{$ENDIF}
Заканчивает условную компиляцию, начатую последней директивой {$IFxxx}.
{$F + } или {$F-}
Управляет выбором типа вызова последовательно компилируемых процедур и функций. Процедуры и функции, скомпилированные в состоянии {$F+}, всегда используют дальний тип обращений. При указании директивы {$F-} Turbo Pascal автоматически выбирает соответствующий тип обращений: дальний (far), если процедура или функция описывается в разделе
интерфейсов программной единицы, и ближний (near) - в противном случае. По умолчанию - {$F-}.
{$G + } или {$G-}
Разрешает или запрещает генерацию кода для процессора 80286. В состоянии {$G-} генерируются только инструкции процессора 8086, и программы, сгенерированные в этом состоянии, могут выполняться на любом процессоре серии 80x86. По умолчанию:
a) + реальный режим - {$G-};
б) + защищенный режим и Windows - {G+}.
{$G имя_модуля ...}
Позволяет задавать группы модулей, которые компоновщик должен размещать в одном сегменте (только для Windows и защищенного режима).
Каждая директива задает группу модулей. Директива допускается только в секции uses программы или библиотеки. Атрибутами сегмента кода можно управлять с помощью директивы $G. Допустимый размер сегмента устанавливается директивой $S.
{$IFDEF идентификатор}
Компилирует следующий за ней исходный текст, если имя идентификатор определено.
{$IFNDEF идентификатор}
Компилирует следующий за ней исходный текст, если имя идентификатор не определено.
{$IFOPT переключатель}
Компилирует следующий исходный текст, если переключатель находится в указанном состоянии. Переключатель (директива) состоит из имени директивы, за которым следует знак «плюс» (+) или «минус» (-).
{$I имя_файла}
Сообщает компилятору о необходимости включить в компиляцию названный файл. Фактически файл вставляется в скомпилированный текст непосредственно за директивой {$1 имя_файла}.
{$I+} или {$I-}
Задает или отменяет генерацию кода, проверяющего результат обращения к процедуре ввода-вывода. По умолчанию - {$I+}.
{$К+} или {$К-}
Управляет генерацией эффективных вызовов экспортируемых приложением процедур и функций (только для Windows). Когда прикладная программа генерируется в состоянии {$К-}, то при создании вызываемых подпрограмм API Windows она должна использовать подпрограммы MakeProcInstance и FreeProcInstance. В состоянии по умолчанию ({$К+}) прикладная программа сама может вызывать экспортированные точки входа, и использовать подпрограммы MakeProcInstance и FreeProcInstance нет необходимости. По умолчанию — {$К+}.
{$L имя_файла}
Предписывает компилятору скомпоновать указанный файл с компилируемой программой или программным модулем. Используется для компоновки кода, написанного на языке ассемблера для внешних (external) подпрограмм.
{$L+} или {$L-}
Приводит в действие или отменяет генерацию информации о локальных идентификаторах. По умолчанию - {$L+}.
{$M…}
Директива в разных режимах выглядит по-разному:
а) + реальный режим - {$М размер_стека, мин_размер_динам_-области, макс_размер_динам_области};
б) + защищенный режим - {$М размер_стека};
в) + Windows - {$М размер_стека, размер_динам_области}.
Указывает параметры распределения памяти программы. При использовании в модулях игнорируется. По умолчанию:
а)+ реальный режим - {$М 16384,0,655360};
б)+ защищенный режим — {$М 16384};
в) + Windows - {$M 8192,8192}.
{SN + } или {$М-}
Осуществляет выбор одной из двух моделей генерации кода вычисления с плавающей точкой, имеющихся в Turbo Pascal.
При указании директивы {$N-} генерируется код для выполнения в программном обеспечении всех вычислений типа real путем вызова программ библиотеки исполняющей системы Turbo Pascal.
При указании директивы {$N+} генерируется код для выполнения всех вычислений типа real с помощью сопроцессора математических вычислений 8087. По умолчанию - {$N-}.
{$O +} или {$O-}
Разрешает или запрещает генерацию оверлейного кода (только для реального режима). Turbo Pascal разрешает использовать модуль в качестве оверлейного только в том случае, если он был скомпилирован с директивой {$O+}.
Директива компилятора {$О+} почти всегда указывается совместно с директивой компилятора {$F+}, что позволяет выполнить требования администратора оверлеев по использованию дальнего типа вызовов (far).
По умолчанию - {$О-}.
{$О имя_модуля}
При использовании в модуле не действует, а при компиляции программы задает, какие используемые в программе модули нужно поместить вместо файла *.ехе в файл *.ovr (только для реального режима). Директивы должны указываться в секции uses программы.
{$Р+} или {$Р-}
Управляет трактовкой параметров-переменных, описанных с помощью ключевого слова string. В состоянии {$Р-} параметры-переменные, описанные с ключевым словом string, являются нормальными параметрами, а в состоянии {$Р+} они являются открытыми строковыми параметрами.
По умолчанию - {$Р-}.
{$Q+} или {$Q-}
Управляет генерацией кода проверки переполнения. В состоянии {$Q+} отдельные арифметические операции (+, -, *, Abs, Sqr, Succ и Pred) проверяются на переполнение.
Директива {$0+} не влияет на стандартные директивы Inc и Dec. Эти процедуры никогда не проверяются на переполнение.
Обычно используется в сочетании с переключателем $R, - который разрешает или запрещает генерацию кода проверки диапазона. По умолчанию - {$Q-}.
{$R + } или {$R-}
Приводит в действие и отменяет генерацию кода с проверкой границ. При указании {$R+} все выражения с индексированными строками и массивы проверяются на предмет нахождения их внутри указанных границ, а все операторы присваивания скалярным величинам и переменным поддиапазонов проверяются на нахождение в заданных границах.
Если директива $R включена, то все обращения к виртуальным методам проверяются на состояние инициализации для экземпляра объекта, выполняющего вызов.
Разрешение проверки границ и вызовов виртуальных методов замедляет выполнение программ и несколько увеличивает их размер, поэтому директиву {$R+} следует использовать только для отладки. По умолчанию - {$R-}.
{$R имя_файла}
Задает имя файла ресурсов, который должен включаться в прикладную программу или библиотеку (только для Windows и защищенного режима). Указанный файл должен представлять собой файл ресурсов Windows. По умолчанию он имеет расширение *.res.
{$S размер_сегмента}
Допустима только в основной программе или библиотеке (только для Windows и защищенного режима). Директива задает предпочитаемый размер сегмента кода для группирования модулей. Указанный размер должен лежать в диапазоне 0-65 535. Модули, превышающие заданный размер, размещаются в своих собственных сегментах кода.
Директива никогда не выдает предупреждений или сообщений об ошибках. Если модули нельзя разместить в сегменте кода с другими модулями, он автоматически помещается в отдельный сегмент. По умолчанию - {$5 16384}.
{$S + } или {$S-}
Приводит в действие или отменяет генерирование кода с проверкой переполнения стека.
При указании {$S+} компилятор генерирует в начале каждой процедуры или функции код, который проверяет, достаточное ли место в стеке выделено для локальных переменных. По умолчанию — {$S+}.
{$Т+} или {$Т-}
Управляет типами значений указателей, генерируемых операцией @.
В состоянии {$Т-} тип результата операции @ всегда является нетипизированным указателем, совместимым со всеми другими типами указателей. Когда к ссылке на переменную в состоянии {$Т+} применяется операция @, результат имеет тип ЛТ, где тип Т совместим только с указателями на тип переменной. По умолчанию — {$Т-}.
{$UNDEF имя}
Отменяет ранее определенный условный идентификатор.
{$V+} или {$V-}
Управляет проверкой типа при передаче строк в качестве параметров-переменных. В состоянии {$V+} выполняется строгая проверка типа, при которой требуется, чтобы формальный и фактический параметры имели идентичные строковые типы (string). В состоянии {$V-} в качестве фактического параметра допускается использовать любую переменную строкового типа, даже если ее описанная длина не совпадает с длиной соответствующего формального параметра. По умолчанию - {$V+}.
{$W+}или {$W-}
Управляет генерацией специфического для Windows кода входа и выхода для процедур и функций с дальним типом вызова (far) (только для Windows). В состоянии {$W+} для процедур и функций far генерируется специальная запись входа и выхода, благодаря чему подсистема управления памятью реального
режима Windows может корректно идентифицировать дальние кадры стека при настройке на цепочки вызова после перемещения сегмента кода или данных.
В состоянии {$W-} генерируется дополнительная запись входа или выхода.
По умолчанию - {$W+}.
{$Х+} или {$Х-}
Разрешает или запрещает расширенный синтаксис Turbo Pascal.
Директива {$Х+} не применяется к встроенным функциям (то есть функциям, определенным в модуле System).
Директива компилятора {$Х+} разрешает поддержку в Turbo Pascal строк с завершающим нулем, активизируя специальные правила, которые применяются к встроенному типу PChar и строкам с нулевой базой. По умолчанию - {$Х+}.
{$Y+} или {$Y-}
Разрешает или запрещает генерацию для идентификаторов ссылочной информации.
Когда программа или модуль компилируются в состоянии {$Y+}, встроенное средство просмотра Turbo Pascal может выводить для этого модуля определения идентификатора и ссылочную информацию.
Обычно используется в сочетании с переключателями $D и $L, которые управляют генерацией отладочной информации и информацией о локальных идентификаторах. Директива $Y не оказывает влияния, если не разрешены директивы $D и $L. По умолчанию - {$Y+}.
Список литературы
1. Абрамов С. А., Гнездшова Г. Г., Капустина Е. Н., Селюн М. И. Задачи по программированию. М.: Наука, 1988.
2. Абрамов С. А., Зима Е.В. Начала программирования на языке Паскаль. М.: Наука, 1987.
3. Гусева А. И. Учимся информатике: задачи и методы их решения. 2-е изд., испр. и доп. М.: Диалог-МИФИ, 2001.
4. ЗеленякО.П. Практикум программирования на Turbo Pascal: Задачи, алгоритмы и решения. К.: ДиаСофт, 2001.
5. Кулътин Я. Б. Turbo Pascal в задачах и примерах. СПб. БХВ-Петербург, 2000.
6. Кулътин Я.Б. Программирование в Turbo Pascal 7.0 и Delphi. 2-е изд.,
перераб. и доп. СПб. БХВ-Петербург, 2001.
7. Немнюгин С. A. Turbo Pascal: Практикум. СПб.: Питер, 2001.
8. Попов Б. В. Turbo Pascal для школьников. Версия 7.0. М.: Финансы и статистика, 2001.
9. Прищепов МЛ., Степанцов В. П., Севернева Е. В. Экзамен по информатике. Основы алгоритмизации и программирования: Справочное пособие. Минск: ТетраСис-темс,2001.
10. Немнюгин С. A. Turbo Pascal. СПб.: Питер, 2001.
11. Симонович С.В. и др. Информатика. Базовый курс. СПб. "Питер". 1999.
Антонов Юрий Николаевич
Дата добавления: 2015-01-13; просмотров: 2033;