ВУЗ:
Составители:
76
размещается в директиве #define после второго пробела (первый
пробел указывается после директивы #define).
Если за последним непробельным символом в строке указывается \
(обратная наклонная черта), это означает, что строка имеет продолжение
на следующей линии, например:
#define STR ((a>b||c>b)&&\
((d%f)==0))
7.3.2 Макроподстановка с аргументами
Препроцессор позволяет использовать более сложную и полезную
форму директивы #define:
#define идентификатор (идентификатор,...,идентификатор) строка
где идентификатор - символический макроидентификатор;
(идентификатор,..., идентификатор) - список параметров; строка -
подставляемая строка (обычно она включает параметры ).
Не должно быть пробелов между макроидентификатором и
открывающей скобкой. В противном случае препроцессор будет
рассматривать директиву как простую подстановку, а список параметров
трактовать как подставляемую строку.
Макроподстановка с аргументами обычно используется аналогично
функции. Иногда макроподстановку с аргументами называют
псевдофункцией или макроопределением. Макроподстановки могут быть
вложенными.
Например, можно задать макроопределения UP и LOW для
преобразования латинских символов соответственно в символы верхнего и
нижнего регистров:
#define UP(c) ((c)-'a'+ 'A')
#define LOW(c) ((с) -'A'+ 'а')
Следует отметить , что каждое появление параметра в подставляемой
строке должно заключаться в скобки; вся подставляемая строка тоже
должна заключаться в скобки.
Например, макроопределение, вычисляющее квадрат некоторого
значения , можно записать так :
76 размещается в директиве #define после второго пробела (первый пробел указывается после директивы #define). Если за последним непробельным символом в строке указывается \ (обратная наклонная черта), это означает, что строка имеет продолжение на следующей линии, например: #define STR ((a>b||c>b)&&\ ((d%f)==0)) 7.3.2 Макроподстановка с аргументами Препроцессор позволяет использовать более сложную и полезную форму директивы #define: #define идентификатор (идентификатор,...,идентификатор) строка где идентификатор - символический макроидентификатор; (идентификатор,..., идентификатор) - список параметров; строка - подставляемая строка (обычно она включает параметры). Не должно быть пробелов между макроидентификатором и открывающей скобкой. В противном случае препроцессор будет рассматривать директиву как простую подстановку, а список параметров трактовать как подставляемую строку. Макроподстановка с аргументами обычно используется аналогично функции. Иногда макроподстановку с аргументами называют псевдофункцией или макроопределением. Макроподстановки могут быть вложенными. Например, можно задать макроопределения UP и LOW для преобразования латинских символов соответственно в символы верхнего и нижнего регистров: #define UP(c) ((c)-'a'+ 'A') #define LOW(c) ((с) -'A'+ 'а') Следует отметить, что каждое появление параметра в подставляемой строке должно заключаться в скобки; вся подставляемая строка тоже должна заключаться в скобки. Например, макроопределение, вычисляющее квадрат некоторого значения, можно записать так: