Пространства имён
Варианты
Действия

#define

Материал из cppreference.com


Ситаксис:

    #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 );
   }

Смотри также: # и ##, #if,...,#endif, #undef