Реферат: Препроцессор языка C.

значению '1020'. Директива '#define' для макроса 'TABLESIZE' использует в

точности те данные, которые были указаны в ее теле и заменяет макрос

'BUFSIZE' на его значение.

4.2. Макросы с аргументами

Значение простого макроса всегда одно и то же при каждом его

использовании. Макросы могут быть более гибкими, если они принимают

аргументы. Аргументами являются фрагменты кода, которые прилагаются при

каждом использовании макроса. Эти фрагменты включаются в расширение макроса

в соответствии с указаниями в макроопределении.

Для определения макроса, использующего аргументы, применяется директива

'#define' со списком имен аргументов в скобках после имени макроса. Именами

аргументов могут быть любые правильные С идентификаторы, разделенные запятыми

и, возможно, пробелами. Открывающаяся скобка должна следовать сразу же после

имени макроса без каких-либо пробелов.

Например, для вычисления минимального значения из двух заданных можно

использовать следующий макрос:

#define min(X, Y) ((X) < (Y) ? (X) : (Y))

Для применения макроса с аргументами нужно указать имя макроса, за

которым следует список аргументов, заключенных в скобки и разделенных

запятыми. Количество принимаемых аргументов должно соответствовать количеству

указываемых. Например, макрос 'min' можно использовать так: 'min (1, 2)' или

'min (x + 28, *p)'.

Значение макроса зависит от используемых аргументов. Каждое имя

аргумента во всем макроопределении заменяется на значения соответствующих

указанных аргументов. При использовании макроса 'min', рассмотренного ранее,

следующим образом:

min (1, 2)

будет получен следующий результат:

((1) < (2) ? (1) : (2))

К-во Просмотров: 655
Бесплатно скачать Реферат: Препроцессор языка C.