Макроподстановки

Макрос – это средство замены одной последовательности символов другой (замена в тексте простейшая форма макроса).

Большими возможностями обладают макроопределения с параметрами.

Формат макроподстановки с параметрами:

#define <идентификатор>(<список_параметров>) <текст>

Примеры:

#define max(a, b) a<b?b:a

Вхождение в программу max(x, 10) заменяется на x<10?10:x

#define abs(x) x>=0?x:-x

Вхождение в программу abs(a) заменяется на a>=0?a:-a

Отличие макросов от функций

1. Функции имеют код (за исключением inline-функций) в одном экземпляре, а коды макроса вставляются в программу столько раз, сколько используется макрос, причем подстановка для макроса осуществляется всегда.

2. Функции работают с определенными типами параметров, макрос пригоден для обработки параметров любого типа, допустимых в выражении строки замещения.

Механизм перегрузки и шаблоны функций в Си++ позволяют решать те же задачи.

Ниже представлен пример с использованием макросов. В примере вместо скобок { } используются слова begin/BEGIN и end/END, как в зыке Паскаль, на самом деле в тексте эти слова заменяются на соответствующие скобки. Также представлен пример макроса с параметрами.

#include <stdio.h>

#define begin {

#define end }

#define BEGIN {

#define END }

#define max(a, b) a>b?a:b

int main(int argc, char* argv[])

{

int A[10];

int i;

int x=10, y=5, z;

for(i=0; i<10; i++) begin

A[i]=i*i;

printf("%d ", A[i]);

end

z=max(x, y); // z=x>y?x:y;

printf("z=%d", z);

return 0;

}

 








Дата добавления: 2015-08-14; просмотров: 634;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.