русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Простое макроопределение (макрос)


Дата добавления: 2015-06-12; просмотров: 552; Нарушение авторских прав


 

Стандартный вид директивы следующий:

#define идентификатор последовательность_символов

В результате её обработки все вхождения определённого в команде идентификатора в тексте программы, начиная с этой команды, заменяются записанной последовательностью символов. Идентификатор называют ещё макроопределением или макросом.

Правила записи директивы define:

последовательность символов должна отделяться от идентификатора хотя бы одним пробелом;

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

если последовательность символов должна быть расположена на нескольких строках, то за последним не пробельным символом в строке записывается символ “\” (обратный слеш). В ходе препроцессорной обработки этот символ вместе с последующим символом конца строки будет удалён из текста программы ( см. пример3);

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

строка замещения может отсутствовать (пример 2);

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

ранее определённый идентификатор можно затем использовать для определения других идентификаторов (пример 6).

Примеры.

1. На практике эта команда часто используется для определения “константы”. Например, в результате выполнения команды

#define n 10

каждое появление идентификатора n будет заменено числом 10.

2. Команда

#define obj

ничего не ставит в соответствие имени obj. Любое вхождение obj будет удалено. Можно использовать такой вид команды для условной компиляции (см. §3).

3. Пример расположения команды на двух строках:

#define Start for (int i=0; i<n; i++)\

for (int j=0; j<m; j++)



Если записать такую команду, то вместо двух подряд идущих вложенных циклов for можно просто записать Start.

4. Пусть задан следующий исходный текст программы:

#define begin {

#define end }

void main()

begin

операторы

end

В результате препроцессорной обработки begin заменится на левую фигурную скобку, а end — на правую. Получим

void main()

{

операторы

}

5 Имея определённый опыт программирования на другом языке (например, Pascal), можно забыть, что в ключевых словах языка С++ строчные и прописные буквы отличаются. Тогда можно записать, например, несколько директив компиляции такого рода:

#define FOR for

#define For for

Тогда не будет ошибки, если в тексте программы запишем FOR или For, так как препроцессор заменит их на for.

6. Если сначала определим

#define ONE 1,

то затем можно использовать ONE при определении другого идентификатора, например:

#define TWO ONE+ONE



<== предыдущая лекция | следующая лекция ==>
С. Задачи повышенной сложности. | Макрос с аргументами.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.27 сек.