Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Директивы компилятора. Директивы-параметры

Поиск:
Параметры
----------
Директивы параметров определяют параметры, которые влияют на компиляцию программы.

Директива Значение
$C Атрибут Атрибут сегмента кода
$D Текст Описание
$I ИмяФайла Файл для включения
$G ИмяМодуля Группа модулей в сегменте
$L ИмяФайла Компоновать объектный файл
$M Стек, Куча Размеры распределения памяти
$O ИмяМодуля Имя оверлейного модуля
$R ИмяФайла Файл с ресурсами
$S РазмерСегмента Размер сегмента

Между именем директивы и параметрами должен находиться хотя бы один пробел.
Например:

{$I TYPES.INC}
{$O MYUNIT}

$C: Атрибут сегмента кода
--------------------------
Управляет атрибутами сегмента кода.

Синтаксис: {$C атрибут атрибут}
Значение по умолчанию: {$C MOVEABLE DEMANDLOAD DISCARDABLE}
Тип: Глобальная

Режим: Windows, Protected

Замечания:
Каждый сегмент кода в приложении или библиотеке имеет набор атрибутов, которые определяют его поведение, когда он загружается в память.
Директива $C влияет только на сегмент кода модуля, программы или библиотеки в которых она помещена.
Атрибуты сегмента кода разбиты на группы по два в каждой. Каждая опция имеет противоположную ей опцию:
Опция Значение

MOVEABLE Система может изменять расположение сегмента кода в памяти.
FIXED Система не может изменять расположение сегмента кода в памяти.

PRELOAD Сегмент кода загружается при запуске программы.
DEMANDLOAD Сегмент кода загружается только при необходимости.

PERMAMENT Сегмент кода остается в памяти всегда, после загрузки.
DISCARDABLE Сегмент кода может быть выгружен из памяти, если он больше не нужен.

Если определены обе опции, только последняя будет иметь значение.

Например запись
{$C FIXED MOVEABLE DISCARDABLE}
создаст сегмент кода с атрибутами MOVEABLE и DISCARDABLE.

$D: Описание
-------------
Вставляет указанный текст в раздел описания в заголовке EXE или DLL файлов.

Синтаксис: {$D Текст}
Тип: Глобальная

Режим: Windows, Protected

$I: Файл для включения
-----------------------
Указывает компилятору включить указанный файл в компиляцию.

Синтаксис: {$I Имя_файла}
Тип: Локальная

Замечания:
Заданное по умолчанию расширение для файла - PAS

Если Имя_файла не определяет каталог, то IDE ищет
- Сначала в текущем каталоге
- Затем в каталогах, определенных в строке ввода Options|Directories|Include directories (или в каталогах, которые вы определили в опции /I в командной строке при запуске TPC)
Включаемый файл вставляется в компилируемый текст сразу после директивы $I. Вы можете использовать 15 уровней вложенных файлов.
ВНИМАНИЕ: Файл для включения не может быть определен в середине операторной части.
Все операторы между словами Begin и End операторной части должны находиться в одном и том же исходном файле.

Директива $G: Группа модулей в сегменте
----------------------------------------
Определяет группу модулей, которые компоновщик должен поместить в один и тот же сегмент.

Синтаксис: {$G ИмяМодуля, ИмяМодуля ...}
Тип: Локальная

Режим: Windows, Protected

Замечания:
Директива $G определяет группу модулей, которые компоновщик должен поместить в один и тот же сегмент. Группировка модулей в одном и том же сегменте гарантирует, что модули загружаются и выгружаются из памяти в одно и то же время. Директива $G используется прежде всего для группировки модулей, содержащих неиспользуемые данной программой части кода.
Каждая директива $G определяет группу модулей. Директивы $G допустимы только в программе или библиотеке, и должны находиться после зарезервированного слова Uses. Компилятор сообщает об ошибке, если вы пытаетесь добавить модуль в более, чем одну группу. В дополнение к любым группам, созданным с помощью директивы $G, компилятор поддерживает заданную по умолчанию группу, которая включает все модули, сгруппированные неявно.
Компоновщик минимизирует число сегментов кода в исполняемом файле, объединяя все модули, которые принадлежат одной и той же группе. Два или более модуля помещаются в один и тот же сегмент кода, если они принадлежат одной группе и имеют одни и те же атрибуты сегмента кода, и если их общий размер не превышает выбранный размер сегмента.
Компоновщик никогда не будет помещать модули, принадлежащие разным группам, в один и тот же сегмент кода.

$L: Компоновать объектный файл
-------------------------------
Указывает компилятору компоновать заданный файл вместе с программой или модулем.

Синтаксис: {$L Имя_файла}
Тип: Локальная

Замечания:
Директива $L используется для компоновки с основной программой кода, написанного на ассемблере для подпрограмм, объявленных внешними.

Указанный файл должен быть переместимым объектным файлом Intel (файл *.OBJ).
Заданное по умолчанию расширение для файла - OBJ
Если Имя_файла не определяет каталог, то IDE ищет
- Сначала в текущем каталоге
- Затем в каталогах, определенных в строке ввода Options|Directories|Object directories.

$M: Размеры распределения памяти
---------------------------------
Определяет параметры распределения памяти.

Синтаксис: {$M размер_стека, размер_кучи}
Значения по умолчанию: {$M размер_стека, размер кучи} (Windows)
{$M размер_стека} (Защищенный режим DOS)
{$M размер_стека, начало_кучи, конец_кучи} (Реальный режим DOS)

Тип: Глобальная
Команда меню: Options|Compiler|Memory sizes

Директива $M определяет параметры распределения памяти для приложения или библиотеки. Параметр "размер_стека" должен быть целым числом в диапазоне от 1024 до 65520, что определяет размер сегмента стека.
Для реального режима DOS, параметры "начало_кучи" и "конец_кучи" определяют минимальный и максимальный размеры кучи, соответственно. Параметр "начало_кучи" должен быть в диапазоне от 0 до 655360, а параметр "конец_кучи" должен быть в диапазоне от "начало_кучи" до 655360.
Для Windows, параметр "размер_кучи" определяет размер локальной области кучи в сегменте данных. Параметр "размер_кучи" должен быть целым числом в диапазоне от 0 до 65520.
ВНИМАНИЕ: Директива $M не дает эффекта, когда используется в модуле. Параметр "размер_стека" игнорируется в библиотеке (библиотека всегда использует стек приложения, которое ее вызывает).

$O: Имя оверлейного модуля
---------------------------
Записывает модуль в файл оверлеев.

Синтаксис: {$O Имя_модуля}
Тип: Локальная

Режим: Real

Когда вы компилируете программу, директива {$O Имя_модуля} определяет, какой из модулей, используемых программой должен быть помещен в OVR файл вместо EXE файла.
Директивы {$O Имя_модуля} должны находиться после раздела Uses программы.
Директива {$O Имя_модуля} не дает эффекта, если используется в модуле.
Компилятор сообщает об ошибке, если вы пытаетесь записать в оверлейный файл модуль, который не компилировался в режиме {$O+}.
Любой модуль, описанный в директиве {$O Имя_модуля}, должен компилироваться со включенной опцией Overlays allowed (в диалоговом окне Options|Compiler).

$R: Файл с ресурсами
---------------------
Определяет имя ресурсного файла, который будет включен в приложение или библиотеку.

Синтаксис: {$R Имя_файла}
Тип: Локальная

Режим: Windows, Protected

Замечания:
Заданное по умолчанию расширение для файла - RES. Это должен быть файл ресурсов Windows.
Если Имя_файла не определяет каталог, то компилятор ищет
- Сначала в текущем каталоге
- Затем в каталогах, определенных в строке ввода Options|Directories|Resource directories
Когда используется в модуле, ресурсный файл просто переписывается в полученный файл модуля. Никакая проверка, гарантирующая что файл существует на данном этапе, не производится.
При компоновке приложения или библиотеки, обрабатываются файлы ресурсов, определенные во всех модулях и в самой программе или библиотеке, и каждый ресурс каждого ресурсного файла копируется в созданный EXE или DLL файлы.

Директива $S: Установка размера сегмента
-----------------------------------------
Определяет размер сегмента кода для сгруппированных модулей.

Синтаксис: {$S РазмерСегмента}
Значение по умолчанию: {$S 16384}
Тип: Глобальная

Режим: Windows, Protected

Замечания:
Директива $S допустима только в основной программе или библиотеке. Директива определяет размер сегментов кода для сгруппированных модулей. Выбранный размер должен находиться в диапазоне от 0 до 65535. Модули, размер которых превышает выбранный размер, помещаются в отдельные сегменты кода.
При группировке модулей, компоновщик помещает модули с одними и теми же атрибутами сегмента кода в один и тот же сегмент кода, до достижения определенного размера. Это ограничение действует также и на группы, определенные с помощью директивы $G.
Директива $S никогда не производит предупреждений или сообщений об ошибках. Если модуль не может быть записан в сегмент кода с другими модулями, он автоматически записывается в отдельный сегмент.
Установка размера сегмента в 0 гарантирует, что каждый модуль будет записан в отдельный сегмент кода, что было установкой по умолчанию в предыдущих версиях компилятора.
Автор: Справка Borland Pascal 7.0
Сайт: http://






Просмотров: 2379

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную