Узнать стоимость написания работы
Оставьте заявку, и в течение 5 минут на почту вам станут поступать предложения!
Реферат

Реферат по предмету "Программирование"


Макросы в C++

Макросы в C++

Макросы в C они очень важны, но в C++ применяются гораздо
меньше. Первое правило относительно них такое: не используйте их, если вы не
обязаны это делать. Как было замечено, почти каждый макрос проявляет свой изъян
или в языке, или в программе. Если вы хотите использовать макросы, прочитайте,
пожалуйста, вначале очень внимательно руководство по вашей реализации C
препроцессора.

Простой макрос определяется так:

#define name rest of line

Когда name встречается как лексема, оно заменяется на
rest of line.

Например:

named = name

после расширения даст:

named = rest of line

Можно также определить макрос с параметрами.

Например:


#define mac(a,b) argument1: a argument2: b

При использовании mac должно даваться две строки
параметра. После расширения mac() они заменяют a и b.

Например:


expanded = mac(foo bar, yuk yuk)

после расширения даст

expanded = argument1: foo bar argument2: yuk yuk

Макросы обрабатывают строки и о синтаксисе C++ знают
очень мало, а о типах C++ или областях видимости - ничего. Компилятор видит
только расширенную форму макроса, поэтому ошибка в макросе диагностируется
когда макрос расширен, а не когда он определен. В результате этого возникают
непонятные сообщения об ошибках.

Вот такими макросы могут быть вполне:

#define Case break;case

#define nl

#define forever for(;;)

#define MIN(a,b) (((a)

Вот совершенно ненужные макросы:

#define PI 3.141593

#define BEGIN {

#define END }

А вот примеры опасных макросов:

#define SQUARE(a) a*a

#define INCR_xx (xx)++

#define DISP = 4

Чтобы увидеть, чем они опасны, попробуйте провести
расширения в следующем примере:

int xx = 0;               
// глобальный счетчик

void f() {

  int xx = 0;            // локальная переменная

  xx = SQUARE(xx+2);     // xx = xx+2*xx+2

  INCR_xx;               // увеличивает локальный xx

  if (a-DISP==b)
{       // a-= 4==b

      // ...

  }

}

Если вы вынуждены использовать макрос, при ссылке на
глобальные имена используйте операцию разрешения области видимости ::  и заключайте вхождения имени параметра макроса
в скобки везде, где это возможно (см. MIN выше).

Обратите внимание на различие результатов расширения этих
двух макросов:

#define m1(a) something(a) // глубокомысленный
комментарий

#define m2(a) something(a) /* глубокомысленный
комментарий */

например,

int a = m1(1)+2;

int b = m2(1)+2;

pасширяется в

int a = something(1) // глубокомысленный комментарий+2;

int b = something(1) /* глубокомысленный комментарий
*/+2;

С помощью макросов вы можете разработать свой собственный
язык. Скорее всего, для всех остальных он будет непостижим. Кроме того, C
препроцессор - очень простой макропроцессор. Когда вы попытаетесь сделать
что-либо нетривиальное, вы, вероятно, обнаружите, что сделать это либо невозможно,
либо чрезвычайно трудно.
Список литературы

Для подготовки данной работы были использованы материалы
с сайта http://www.realcoding.net


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Математизация науки и ее возможности
Реферат Современные концепции обучения школьников иностранному языку
Реферат Конструирование ребенком альтернативной/желаемой реальности
Реферат Оценка доказательств в стадии назначения судебного заседания
Реферат Бухгалтерская отчетность 24
Реферат 13. 00. 04 Теория и методика физического воспитания, спортивной тренировки, оздоровительной и адаптивной физической культуры
Реферат Учет затрат на производство продукции 3
Реферат Инфляция и антиинфляционная политика в рыночной экономике Казахстана
Реферат Northern Spotted Owl Controversy Essay Research Paper
Реферат Культура СССР в послереволюционный период 1917-1720-е гг
Реферат Статистичний аналіз продуктивності та валового приросту молодняку великої рогатої худоби та тварин на відгодівлі
Реферат Несчастные случаи на предприятии, потенциальные опасности. Мероприятия по их предупреждению
Реферат Разработка пуансонного сменного механизма универсальной кухонной машины для нарезания сырых овощей
Реферат Содержание финансовых отчетов
Реферат Інформаційна безпека систем електронної комерції поняття інформаційної безпеки