MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Препроцессорные средства в C и С++

Название:Препроцессорные средства в C и С++
Просмотров:97
Раздел:Информатика, программирование
Ссылка:Скачать(42 KB)
Описание: Препроцессорные средства в C и С++ 3.1 Основные понятия препроцессорной обработки   Препроцессорная обработка (макрообработка) — это преобразование текста путем замены препроцессорных переменных их знач

Часть полного текста документа:

Препроцессорные средства в C и С++ 3.1 Основные понятия препроцессорной обработки

 

Препроцессорная обработка (макрообработка) — это преобразование текста путем замены препроцессорных переменных их значениями и выполнения препроцессорных операторов (директив препроцессора).

В общем случае препроцессорные средства включают:

- определение препроцессорных переменных и присвоенных им значений;

- средства управления просмотром преобразуемого текста;

- правила подстановки значений макропеременных.

Определение препроцессорной переменной часто называют макроопределением или макросом, а подстановку ее значения в обрабатываемый текст — макрорасширением.

Макрообработка состоит в последовательном просмотре исходного текста и выделения в нем лексем — сканировании текста. Если выделенная лексема является препроцессорной переменной, она заменяется на свое значение, т.е. строится макрорасширение. Если встречается препроцессорная директива, то она выполняется. Лексемы, не являющиеся препроцессорными переменными или директивами, переносятся в выходной текст без изменения. Результатом такой обработки является текст, не содержащий препроцессорных директив и препроцессорных переменных. Если исходный текст был программой на C или C++, то после макрообработки должен быть получен синтаксически правильный текст на C или C++.

Как правило, строковые литералы (строки в кавычках) рассматриваются препроцессором как отдельные лексемы и переносятся в выходной текст без изменения.

Препроцессор обычно обеспечивает возможность включения в программу исходных текстов из других файлов, в Си/Си++ это выполняется по директиве

# include имя файла

Если включаемый файл находится в одном из оглавлений, указываемых в установках интегрированной среды в пункте options-directory-include, где можно указать несколько путей, разделяя их точкой с запятой, имя файла заключается в уголковые кавычки, например

# include  <iostream.h> в остальных случаях указывается полный путь к включаемому файлу в кавычках:

# include  “c:\myinclud\includ1.h”

При включении файла на место директивы #include вставляется текст из этого файла, а последующие строки исходного файла сдвигаются вниз, после чего вставленный текст сканируется препроцессором.

Отметим, что директивы препроцессора всегда записывается с новой строки и первым символом директивы должен быть знак #, которому могут предшествовать только пробелы и знаки табуляции. Концом текста директивы служит конец строки. Если директива не помещается в одной строке, в конце строки ставится знак \ и директива продолжается на следующей строке. Количество строк продолжения не ограничивается.

3.2. Препроцессорные переменные

Препроцессорная переменная (макроимя) объявляется директивой

# define идентификатор  значение

Например:

# define  L_NAME      6

# define   END_FORMULA     ‘;’

# define   DEBUG

Если объявленное таким способом макроимя встретится в последующем тексте программы, оно будет заменено на соответствующее значение:

char    namevar [L_NAME];  // эквивалентно char namevar[6];

  if ( c != END_FORMULA ) ......     //   if ( c != ‘;’).....

Переменная DEBUG объявлена. но не имеет значения. В последующем тексте можно проверять. объявлено или нет это имя, и в зависимости от результата проверки включать или не включать в программу некоторые операторы.

Объявленное в define макроимя известно препроцессору от точки его объявления до конца файла или пока не встретится директива

# undef имя

Например, #undef DEBUG

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

Имеется ряд предопределенных макроимен, предусмотренных стандартами на языки C и C++, в том числе:

_ _LINE_ _       - номер строки в исходном файле,

_ _FILE_ _        - имя обрабатываемого файла,

_ _DATE_ _      - дата начала обработки препроцессором,

_ _TIME_ _      - время начала обработки,

_ _STDC_ _      - программа должна соответствовать стандарту ANSI.

_ _cplusplus       - компилировать программу в соответствии с синтаксисом Си++,

_ _PASCAL_ _  - последующие имена по умолчанию имеют тип “имя языка Pascal”

Предопределенные имена нельзя объявлять в #define или отменять в #undef.

Макросы FILE, DATE и TIME могут использоваться в сообщениях, выдаваемых в начале программы для указания, какая версия программы используется, например,

cout << “\n Файл “ << __FILE__ << “ От “ << __DATE__ << “\n”;

Макрос PASCAL применяется при описании функций, предназначенных для использования в программах, написанных на языке Pascal, а также функций, вызываемых операционной системой Windows.

При программировании на Си директивы типа

#define    MAX_LEN     80 обычно применяются для задания именованных констант. ............





Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  
 
     

Вечно с вами © MaterStudiorum.ru