ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Директива #define с параметрами. МакроподстановкаВыше мы рассмотрели директиву препроцессора #define без параметров и выяснили, что с ее помощью выполняется обычная контекстная замена. Часто используется также "другой #define"? директива #define с параметрами. Как всегда, приведем сначала простой пример. В отличие от Паскаля в Си нет функции sqr (возведение в квадрат), хотя для записи некоторых выражений (например, формулы расстояния между двумя точками в пространстве) эта функция очень пригодилась бы. Конечно, написать такую функцию совсем просто, но в Си такие задачки обычно решаются посредством макроподстановок: #define с параметрами. Итак, пример: #include <stdio.h> #define SQR(x) (x)*(х) void main(void) { float a; printf ("\nВведите число:");scanf("%f",&a); printf ("Его квадрат: %f\n",SQR(a)); } Фактически директива #define с параметрами работает так же как и без параметров, - заменяет все вхождения своего первого аргумента (в данном случае sqr (х)) на второй аргумент (в данном случае (х) * (х)). Особенность этой директивы в том, что параметры ее формальные (это видно и из приведенного примера). То есть заменяются не только записи SQR (х), но и все записи вида SQR (выражение) на записи вида (выражение) * (выражение), Приведем еще несколько типичных примеров использования директивы #define с параметрами: #define ABS(х) ((х) >=0)? (х): (-(х)) #define МАХ(х,у) ((х)>(у))?(х):(у)
Файлы Не нашли, что искали? Воспользуйтесь поиском:
|