Понедельник, Июль 5th, 2010

Шпоры по С++

19 Стадии и команды препроцессорной обработки (Включение текстов из файлов)
Стадии препроцессорной обработки
В интегрированную среду подготовки программ на С++ или в компиляторе языка как обязательный компонент входит препроцессор. Назначение препроцессора — обработка исходного текста программы до ее компиляции.
Препроцессорная обработка включает несколько стадий, выполняемых последовательно. Конкретная реализация транслятора может объединить несколько стадий, но результат должен быть таким, как если бы они выполнялись последовательно:
-все системно-зависимые обозначения перекодируются в стандартные коды;
— каждая пара из символов ‘ \ ‘, и “конец строки” убираются, и тем самым следующая строка исходного файла присоединяется к строке, в которой находилась эта пара символов;
— в тексте распознаются директивы препроцессора, а каждый комментарий заменяется одним символом пустого промежутка;
— выполняются директивы препроцессора и производятся макроподстановки;
— ESC-последовательности в символьных константах и символьных строках, например , ‘ \ n ‘ заменяются на их эквиваленты (на соответствующие числовые коды);
— смежные символьные строки конкатенируются, т.е. соединяются в одну строку.
Для управления препроцессором, т.е. для задания нужных действий, используются команды (директивы) препроцессора, каждая из которых помещается на отдельной строке и начинается с символа #.
Стадия обработки директив препроцессора:
— замена идентификаторов (обозначений) заранее подготовленными последовательностями символов;
— включение в программу текстов из указанных файлов;
— исключение из программы отдельных частей ее текста (условная компиляция);
— макроподстановка, т.е. замена обозначения параметризованным текстом, формируемым препроцессором с учетом конкретных параметров (аргументов).
Включение текстов из файлов
Для включения текста из файла используется команда #include, имеющая две формы записи:
#include <имя_файла> // имя в угловых скобках
#include «имя?файла» // имя в кавычках
Если имя_файла — в угловых скобках, то препроцессор разыскивает файл в стандартных системных каталогах. Если имя_файла заключено в кавычки, то вначале препроцессор просматривает текущий каталог пользователя и только затем обращается к просмотру стандартных системных каталогов.
21 Макроустановки средствами препроцессора
Макрос, по определению, есть средство замены одной последовательности символов другой. Для выполнения замен должны быть заданы соответствующие макроопределения. Простейшее макроопределение:
#define идентификатор строка_замещения
Такая директива удобна, однако она имеет существенный недостаток — строка замещения фиксирована. Большими возможностями обладает следующее макроопределение с параметрами
#define имя (список_параметров) строка_замещения
Здесь имя — имя макроса (идентификатор), список_параметров — список разделенных запятыми идентификаторов. Между именем макроса и списком параметров не должно быть пробелов.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Категория: Шпоры