ДИРЕКТИВЫ КОМПИЛЯТОРА

{$А+} или {$А-}

Позволяет переключаться между выравниванием перемен­ных и типизированных констант на границу слова и на гра­ницу байта.

В состоянии {$А+} все переменные и типизированные кон­станты, превышающие по размеру один байт, выравниваются по границе машинного слова (адреса с четными значениями).

В состоянии {$А-} никаких действий по выравниванию не предпринимается.

По умолчанию - {$А+}.

 

{$В + } или {$В-}

Осуществляет два различных вида генерации кода для бу­левых операций 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+}.

 

{$К+} или {$К-}

Управляет генерацией эффективных вызовов экспортируе­мых приложением процедур и функций (только для Win­dows). Когда прикладная программа генерируется в состоянии {$К-}, то при создании вызываемых подпрограмм API Win­dows она должна использовать подпрограммы 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 имя_файла}

Задает имя файла ресурсов, который должен включаться в прикладную программу или библиотеку (только для Win­dows и защищенного режима). Указанный файл должен представлять собой файл ресурсов 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; просмотров: 2042;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.031 сек.