=====#define=====
Ситаксис:
#define имя-макроса заменяемая-строка
Команда #define используется для организации замены строки по всему файлу,
где она указана. Другими словами, #define приводит к тому, что компилятор
(препроцессор) проходит по всему файлу и делает замену //имя-макроса// на
//заменяемая-строка//.
Это типичный пример использования #define (как минимум в C):
#define TRUE 1
#define FALSE 0
...
int done = 0;
while( done != TRUE ) {
...
}
Другая возможность команды #define это возможность обрабатывать аргументы, что дает
возможность создавать псевдофункции. Например такой код:
#define absolute_value( x ) ( ((x) < 0) ? -(x) : (x) )
...
int num = -1;
while( absolute_value( num ) ) {
...
}
Хорошим стилем будет использовать дополнительные скобки в сложных макросах.
В примере выше переменная "x" всегда окружена своими собственными
круглыми скобками. В этом случае выражение будет вычесленно полностью перед
сравнением с 0 или умножением на -1. Также, окружая скобками параметры, мы
предовращаем загрязнение кода . Если не быть осторожным, то возможна ситуация,
когда компилятор будет неверно интерпретировать ваш код.
Ниже пример использования команды #define для создания цикла, который будет вызывать
функцию печати чисел от 1 до 20:
#define count_up( v, low, high ) \
for( (v) = (low); (v) <= (high); (v)++ )
...
int i;
count_up( i, 1, 20 ) {
printf( "i is %d\n", i );
}
Смотри также: [[sharp|# и ##]], [[preprocessor_if|#if,...,#endif]], [[undef|#undef]]