Здесь возникают даже некоторые чисто
#define square(x) x * x
при обращении к ней, как square(z+1). Здесь возникают даже некоторые чисто лексические проблемы: между именем макро и левой круглой скобкой, открывающей список ее аргументов, не должно быть никаких пробелов.
Тем не менее аппарат макросов является весьма ценным. Один практический пример дает описываемая в лекции №7
стандартная библиотека ввода-вывода, в которой getchar и putchar определены как макросы (очевидно putchar должна иметь аргумент ), что позволяет избежать затрат на обращение к функции при обработке каждого символа.
Другие возможности макропроцессора описаны в приложении А.
Упражнение 4-9 Определите макрос swap(x, y), который обменивает значениями два своих аргумента типа int. (В этом случае поможет блочная структура).
|
|
|
© 2003-2007 INTUIT.ru. Все права защищены. |
Содержание Назад