Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Руководство пользователя 8 страница



 

Примечание: О модулях подробнее рассказывается в Гла-

ве 7 "Модули Borland Pascal".

 

* Если модуль компонуется с файлом.OBJ (внешние подпрограм-

мы) и файл.OBJ является более новым, чем модули.TPU,

.TPW или.TPP, то модуль перекомпилируется.

 

* Если модуль содержит включаемый файл, и включаемый файл

более новый, чем модули.TPU,.TPW или.TPP, то модуль пе-

рекомпилируется.

 

Если компилятор не может найти исходный код модуля, то мо-

дуль не компилируется и используется как есть.

 

 


 

B.Pascal 7 & Objects /UG - 73 -

 

Построение (Build)

─────────────────────────────────────────────────────────────────

 

Команда Compile│Build (Компиляция│Построение) перестраивает

все компоненты вашей программы независимо от того, являются они

текущими или нет.

 

Эта команда аналогична команде Compile│Make, только она вы-

полняет полную перекомпиляцию, даже если файл не изменялся. Если

вы остановите команду Build, нажав клавиши Ctrl+Break, или полу-

чите ошибки, которые прекращают построение, то, выбрав Compile│

Make, вы можете определить, где это произошло.

 

Если в IDE реального режима DOS вы выбрали компиляцию в па-

мять, то все файлы.TPU обновляются на диске (для всех перекомпи-

лируемых командой Build модулей).

 

 

Выполнение

─────────────────────────────────────────────────────────────────

 

После создания выполняемого файла вы можете попробовать, как

она работает. Для этого можно использовать команду Run│Run. На

самом деле вам не нужно предварительно компилировать свою прог-

рамму. Если ваш код изменился с момента последней компиляции, ко-

манда Run автоматически формирует вашу программу и затем выполня-

ет ее.

 

Если ваша программа представляет собой прикладную программу

DOS защищенного режима, то в текущем каталоге или по маршруту DOS

у вас должны находиться файлы DPMI16BL.OVL и RTM.EXE, в противном

случае программа выполняться не будет. Вы можете свободно расп-

ространять эти файлы с готовой прикладной программой.

 

Передача программе параметров



 

При запуске программы вы можете передать ей параметры ко-

мандной строки. Для вывода диалогового окна Parameters (Парамет-

ры) и набора списка параметров, которые вы хотите использовать,

выберите команду Run│Paramenters.

 


 

B.Pascal 7 & Objects /UG - 74 -

 

Параметры компилятора и компоновщика

─────────────────────────────────────────────────────────────────

 

IDE позволяет вам выбрать несколько параметров, влияющих на

характер компиляции кода. Для вывода диалогового окна параметров

компилятора Compiler Options выберите команду Options│Compiler.

Если вы не уверены относительно того, что делает конкретный пара-

метр, выберите его в диалоговом окне, в строке состояния появится

поясняющая справка. Для вывода более подробной информации о дан-

ном параметре нажмите клавишу F1 или выберите команду Help для

получения справочной информации обо всем диалоговом окне Compiler

Options.

 

╔═[ ]══════════════════════Compiler Options═════════════════════╗

║ Compiler settings for: ▒▒Real mode target▒▒▒▒▒▒▒▒▒▒v▒║

║───────────────────────────────────────────────────────────────║

║ Code generation ║

║ ▒[▒]▒Force▒far▒calls▒▒▒▒▒▒▒▒▒[▒]▒286▒instructions▒▒▒▒▒▒▒▒▒ ║

║ ▒[▒]▒Overlays▒allowed▒▒▒▒▒▒▒▒[▒]▒Smart▒callbacks▒▒▒▒▒▒▒▒▒▒ ║

║ ▒[X]▒Word▒align▒data▒▒▒▒▒▒▒▒▒[▒]▒Windows▒stack▒frames▒▒▒▒▒ ║

║ Runtime errors Syntax Options ║

║ ▒[▒]▒Range▒checking▒▒▒▒▒ ▒[X]▒Strict▒var-strings▒▒▒▒▒▒▒ ║

║ ▒[X]▒Stack▒checking▒▒▒▒▒ ▒[▒]▒Complete▒boolean▒eval▒▒▒▒ ║

║ ▒[X]▒I/O▒checking▒▒▒▒▒▒▒ ▒[X]▒Extended▒syntax▒▒▒▒▒▒▒▒▒▒ ║

║ ▒[ ]▒Overflow▒checking▒▒ ▒[▒]▒Typed▒@▒operator▒▒▒▒▒▒▒▒▒ ║

║ Debugging ▒[▒]▒Open▒parameters▒▒▒▒▒▒▒▒▒▒ ║

║ ▒[X]▒Debug▒Information▒▒ Numeric processing ║

║ ▒[X]▒Local▒symbols▒▒▒▒▒▒ ▒[▒]▒8087/80287▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ║

║ ▒[X]▒Symbol▒information▒ ▒[X]▒Emulation▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ║

║ ║

║ Conditional defines ║

║ ██████████████████████████████████████████████████████████v█ ║

║ ║

║ █████OK████ ███Cancel███ ███Help████ ║

║ ▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒ ║

║ ║

╚═══════════════════════════════════════════════════════════════╝

 

Рис. 4.3 Диалоговое окно Compiler Options.

 

Compiler settings for - установки компилятора для; Real mode

target - целевая платформа реального режима; Code generation -

генерация кода; Force far calls - принудительное использование

вызовов дальнего типа; 286 instructions - инструкции процессора

286; Overlays allowed - допустимость оверлеев; Smart callbacks -

эффективные вызовы; Word align data - выравнивание данных на гра-

ницу слова; Windows stack frames кадры стека Windows; Runtime

errors - ошибки этапа выполнения; Syntax Options - синтаксические

ошибки; Range checking - проверка диапазона; Strict var-strings -

строгая проверка строковых переменных; Stack checking - проверка

стека; Complete boolean eval - полное вычисление булевских выра-

жений; I/O checking - проверка ввода-вывода; Extended syntax -

расширенный синтаксис; Overflow checking - проверка переполнения


 

B.Pascal 7 & Objects /UG - 75 -

 

стека; Typed @ operator - типизованная операция @; Debugging -

отладка; Open parameters - открытые параметры; Debug Information

- отладочная информация; Numeric processing - числовая обработка;

Local symbols - локальные идентификаторы; 8087/80287 - процессоры

8087/80287; Symbol information - локальная информация; Emulation

- эмуляция; Conditional defines - условные определения.

 

Задание параметров

компилятора для целевой платформы

 

Выбираемые вами параметры компилятора в сильной степени за-

висят от того, какую целевую платформу вы используете. Например,

если вы создаете приложение DOS реального режима, то можете раз-

решить использование оверлеев, что не требуется для программ

Windows или защищенного режима DOS.

 

Для указанной целевой платформы вы можете установить стан-

дартные параметры компилятора:

 

Примечание: Меню Compiler Options компилятора

TURBO.EXE не имеет параметра Compiler Setting For.

 

1. Для вывода прокручиваемого списка щелкните "мышью" на

стрелке v или нажмите клавишу стрелки вниз при выборе

блока списка Compiler Setting For.

 

2. Проверьте выбранную целевую платформу.

 

IDE автоматически устанавливает обычно используемые парамет-

ры. В любой момент вы можете переопределить эти выбранные в IDE

параметры.

 

Если параметр компилятора несовместим с выбранной целевой

платформой, то он становится тусклым, и вы не можете его выби-

рать.

 

Установка параметров

компилятора для всех целевых платформ

 

Если вы хотите чтобы конкретный параметр компилятора был ус-

тановлен независимо от используемой целевой платформы, сделайте

следующее:

 

1. В качестве значения параметра Compiler Settings For выбе-

рите All Targets.

 

2. Установите или отмените параметр компилятора, который вы

хотите установить.

 

Например, если вы хотите использовать инструкции процессора

286 для всех платформ, выберите All Targets (Все платформы), за-

тем установите параметр 286 instructions.

 


 

B.Pascal 7 & Objects /UG - 76 -

 

Когда вы выбираете All Targets, то можете увидеть, что в не-

которых кнопках с независимой фиксацией выводится вопросительный

знак (?). Это указывает, то установка параметра для всех платформ

не является одинаковой. Вы можете изменить этот параметр, сделав

его одинаковым для всех платформ, или оставить как есть.

 

Задание параметров компоновщика

 

Характер компоновки вашего кода зависит от установок в диа-

логовом окне Linker Options (Параметры компоновщика). Для его вы-

вода выберите команду Options│Linker. Если нужна более детальная

информация, выберите Help.

 

Включение в код директив компилятора

 

Существует еще один способ задания режима компиляции исход-

ного кода. Вместо использования для установки параметров диалого-

вых окон вы можете включить в свой код директивы компилятора.

Например, вы можете включить в свою программу проверку диапазона,

установив в диалоговом окне Options│Compiler параметр Range

Checking, или поместить в исходный код директиву {$R+}. Полное

описание директив компилятора и их использования вы можете найти

в Главе 2 ("Директивы компилятора") "Справочного руководства

программиста".

 

Включаемые в исходный код директивы компилятора имеют боль-

ший приоритет, чем параметры компилятора, устанавливаемые в IDE.

Например, если в IDE вы установите параметр Range Checking, но

ваша программа включает в себя директиву {R-}, то программа ком-

пилируется с выключенной проверкой диапазона.

 

Оптимизация кода

 

Некоторые параметры компилятора, поскольку они включают в

программу код проверки и обработки ошибок, влияют как на размер,

так и на скорость вашего кода. Хотя такие параметры полезно ис-

пользовать при разработке программы, без них вы можете получить

более быстрый и компактный код.

 

Приведем параметры, влияющие на оптимизацию кода. Каждая ди-

ректива компилятора сопровождается указанием соответствующего па-

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

компиляции следующих параметров:

 

* Выравнивание данных на границу слова Word Align Data

({$A+}) выравнивает переменные и типизированные константы

на границу слова, что дает в системах с процессорами 80x86

более быстрый доступ к памяти.

 

* Выключение полного вычисления булевских выражений Complete

Boolean Evaluation ({$B-}) дает код, который в зависимости

от установки ваших булевских выражений более быстро рабо-

тает.


 

B.Pascal 7 & Objects /UG - 77 -

 

 

* При выключенной эмуляции Emulation ({$E-}) компилятор не

будет выполнять компоновку с библиотекой исполняющей сис-

темы, эмулирующей сопроцессор 80x87. Она должна использо-

вать сопроцессор 80х87 (в случае его наличия) или стан-

дартный 6-байтовый тип Real. При компиляции приложений

Windows эмуляция не используется; при наличии директивы

эмуляции компилятор ее игнорирует.

 

* Когда задана генерация кода процессора 80286 Code

Generation ({$G+}), компилятор для улучшения генерации ко-

да использует дополнительные инструкции процессора 80286.

Скомпилированные таким образом программы не будут работать

на процессорах 8088 и 8086.

 

* При выключенной проверке ввода-вывода I/O Checking ({$I-})

компилятор не проверяет ошибки ввода-вывода. Вызвав пре-

допределенную функцию IOResult, вы можете самостоятельно

проверить ошибки ввода-вывода.

 

* Когда выключена числовая обработка Numeric Processing

({$N-}), компилятор генерирует код, способный выполнять

все операции с плавающей точкой с помощью встроенного

6-байтового типа Real. Если параметр Numeric Processing

включен, ({$N+}), компилятор использует сопроцессор 80х87

или эмулирует сопроцессор с помощью программного обеспе-

чения, в зависимости от наличия сопроцессора 80х87. Полу-

ченный в результате код может использовать четыре дополни-

тельных вещественных типа (Single, Double, Extended и

Comp).

 

* Когда выключена проверка диапазона Stack Checking ({$R-}),

компилятор не выполняет проверку на ошибки индексирования

массива и присваивание значения вне диапазона.

 

* При выключенной проверке стека Stack Checking ({$S-}) ком-

пилятор не обеспечивает достаточного пространства в стеке

для каждого вызова процедуры или функции.

 

* Когда включена нестрогая проверка строк-переменных Relaxed

String Var Checking ($V-}), компилятор не проверяет пара-

метры-переменные строкового типа. Это позволяет вам пере-

давать строки фактических параметров, имеющие длину, от-

личную от длины, определенной для формального парамет-

ра-переменной.

 

* При разрешении расширенного синтаксиса Extended Syntax

({$X+}) вы можете использовать вызовы функций как операто-

ры, поскольку результат функциональных вызовов может отб-

расываться.


 

B.Pascal 7 & Objects /UG - 78 -

 

 

Оптимизация вашего кода с помощью этих параметров имеет два

преимущества. Во-первых, это делает ваш код более компактным и

быстрым. Во-вторых, позволяет делать вам некоторые вещи, которые

вы обычно делать не можете. Однако, все эти параметры вносят не-

который риск, поэтому используйте их аккуратно, и если ваша прог-

рамма начинает вести себя странно, вернитесь к исходной ситуации.

 


 

B.Pascal 7 & Objects /UG - 79 -

 

Условная компиляция

─────────────────────────────────────────────────────────────────

 

Чтобы облегчить ваши задачи, Borland Pascal предлагает

средство условной компиляции. Это означает, что можете компили-

ровать части своей программы на основе параметров или определен-

ных идентификаторов.

 

Условные директивы аналогичны по формату директивам компиля-

тора, с которыми вы уже познакомились. Они имеют следующий фор-

мат:

 

{$директива аргумент}

 

где "директива" - это такая директива как DEFINE, IFDEF и т.д., а

аргумент - необязательный аргумент. Между ними обязательно должен

присутствовать разделитель (пробел или табуляция). Все условные

директивы и их смысл приведены в Таблице 4.3.

 

Примечание: Полное описание директив условной компиля-

ции можно найти в Главе 2 ("Директивы компилятора") "Спра-

вочного руководства программиста".

 

Директива условной компиляции Таблица 4.3

┌──────────────────────────────┬────────────────────────────────┐

│ Директива │ Описание │

├──────────────────────────────┼────────────────────────────────┤

│ {$DEFINE идентификатор} │ Определяет "идентификатор" для │

│ │ других директив. │

├──────────────────────────────┼────────────────────────────────┤

│ {$UNDEF идентификатор} │ Отменяет определение "иденти- │

│ │ фикатора". │

├──────────────────────────────┼────────────────────────────────┤

│ {$IFDEF идентификатор} │ Компилирует следующий код, ес- │

│ │ ли определен "идентификатор". │

├──────────────────────────────┼────────────────────────────────┤

│ {$IFNDEF идентификатор} │ Компилирует следующий код, ес- │

│ │ ли "идентификатор" не опреде- │

│ │ лен. │

├──────────────────────────────┼────────────────────────────────┤

│ {$IFOPT x+} │ Компилирует следующий код, ес- │

│ │ ли разрешена директива x. │

├──────────────────────────────┼────────────────────────────────┤

│ {$IFOPT x-} │ Компилирует следующий код, ес- │

│ │ ли запрещена директива x. │

├──────────────────────────────┼────────────────────────────────┤

│ {ELSE} │ Компилирует следующий код, ес- │

│ │ ли предыдущее выражение IFxxx │

│ │ не равно True. │

├──────────────────────────────┼────────────────────────────────┤

│ {$ENDIF} │ Отмечает конец блока IFxxx или │

│ │ ELSE. │

└──────────────────────────────┴────────────────────────────────┘


 

B.Pascal 7 & Objects /UG - 80 -

 

Директивы DEFINE и UNDEF

─────────────────────────────────────────────────────────────────

 

Директивы IFDEF и IFNDEF проверяют, определен ли заданный

идентификатор. Эти идентификаторы определяются с помощью DEFINE и

UNDEF. (Можно также определять идентификаторы в командной строке

или в IDE.)

 

Чтобы определить идентификатор, включите в программу следую-

щую директиву:

 

{$DEFINE идентификатор}

 

где "идентификатор" в плане длины, разрешенных символов и других

спецификаций подчиняется обычным правилам для имен идентификато-

ров. Например, вы можете записать:

 

{$DEFINE debug}

 

Этим для остальной части компилируемого модуля или до следу-

ющего оператора:

 

{$UNDEF debug}

 

определяется идентификатор debug.

 

Директива UNDEF "разопределяет" идентификатор. Если иденти-

фикатор не определен, то она не действует.

 

Определение условных идентификаторов в IDE

 

Вместо того, чтобы вставлять директиву DEFINE в свой исход-

ный код, вы можете также определить условные идентификаторы и

блоке ввода Conditional Defines (Условные определения). Определи-

те идентификаторы, введя их в блоке ввода и разделив точками за-

пятой. Например, в следующем примере определяются два условных

идентификатора - TestCode и DebugCode:

 

TestCode:DebugCode

 

 


 

B.Pascal 7 & Objects /UG - 81 -

 

Предопределенные идентификаторы

 

Кроме определяемых вами идентификаторов вы можете также про-

верять отдельные идентификаторы, определяемые компилятором:

 

Предопределенные условные идентификаторы Таблица 4.4

┌───────────────────┬───────────────────────────────────────────┐

│ Идентификатор │ Показывает │

├───────────────────┼───────────────────────────────────────────┤


Дата добавления: 2015-09-30; просмотров: 21 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.05 сек.)







<== предыдущая лекция | следующая лекция ==>