Макросы в 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 <<"\n"
Вам будет интересно - Реферат: Возможен ли искусственный интеллект
#define forever for(;;)
#define MIN(a,b) (((a)<(b))?(a):(b))
Вот совершенно ненужные макросы:
#define PI 3.141593
#define BEGIN {
Похожий материал - Реферат: Матричные принтеры
#define END }
А вот примеры опасных макросов:
#define SQUARE(a) a*a
#define INCR_xx (xx)++