Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiS.doc
Скачиваний:
88
Добавлен:
13.04.2015
Размер:
815.1 Кб
Скачать

20.4 Директива #error

Директива #error вызывает во время компиляции сообщение об ошибке.

#error сообщение_об_ошибке

П р и м е р. Обеспечение правильности параметров компиляции.

#if !defined(__cplusplus)

# error Этот файл должен компилироваться в режиме С++

#endif

Сообщение может содержать идентификаторы макросов, которые будут расширены препроцессором. Директива обычно применяется, когда не был определен необходимый макрос.

20.5 Директива #line

С помощью директивы #line можно изменить внутренний счетчик строк компилятора и имя компилируемого файла. Она имеет следующий вид

#line номер_строки ["имя_файла"]

20.6 Директива #pragma

У директивы #pragma есть несколько применений.

#pragma argsused — подавляет предупреждение о неиспользовании параметра функции, расположенной вслед за директивой;

#pragma exit — указывает функцию типа void fff ( ), которая будет вызвана перед завершением программы;

#pragma hdrfile — специфицирует имя заранее откомпилированного файла-заголовка;

#pragma hdrstop — предписывает компилятору не включать дальнейшую информацию в прекомпилируемый заголовок;

#pragma inline — говорит компилятору, что компиляция текущего модуля должна проводиться через ассемблер;

#pragma intrinsic — разрешает/запрещает генерацию inline-кода для встроенной функции;

#pragma option — включает в код опции командной строки компилятора;

#pragma saveregs — гарантирует, что определяемая далее функция сохранит регистры;

#pragma startup — указывает функцию типа void fff(), которая будет вызвана перед началом программы;

#pragma warn — выборочно разрешает или подавляет предупреждающие сообщения.

21 РАСШИРЕНИЯ ЯЗЫКА В BORLAND C++

Расширения представлены дополнительными ключевыми словами и опциями компилятора. Компилятор распознает эти ключевые слова, если им предшествует один или два подчерка или подчерки отсутствуют.

21.1 Адресация памяти

Чтобы обратиться к ячейке памяти, нужно указать значение сегмента и смещение внутри сегмента. Значение сегмента загружается в один из сегментных регистров процессора. Размер сегмента не может превышать 64 К.

В реальном режиме сегментный регистр содержит адрес сегмента — число, кратное 16. В защищенном режиме сегментный регистр содержит селектор — номер элемента таблицы дескрипторов, где хранится адрес сегмента. В обычном защищенном режиме — это адрес физической памяти, в усовершенствованном (enchanced) защищенном режиме — это адрес виртуальной памяти.

21.2 Модели памяти

Чтобы можно было выбрать между эффективностью односегментной программы и возможностями, предоставляемыми большими объемами кода и данных, имеются различные модели памяти. Модель памяти — это совокупность параметров компиляции.

Характеристики имеющихся в BorlandC моделей памяти сведены в таблицу.

Таблица 21.1 – Модели памяти

Модель

Код Данные Стек

Указатели

Платформа DOS

Tiny

Код + данные + стек + ДП до 64К

near

Small

64К данные + стек + ДП до 64К

near

Medium

64К/файл данные + стек + ДП до 64К

near

Compact

64К 64К 64К

far

Large

64К/файл 64К 64К

far

Huge

64К/файл 64К/файл 64К

far

Платформа WINDOWS

Small

64К данные + стек + ДП до 64К

near

Medium

64К/файл данные + стек+ ДП до 64К

near

Compact

64К данные + стек до 64К

far

Large

64К/файл данные + стек до 64К

far

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]