русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Макроподстановка с аргументами.

Препроцессор позволяет использовать более сложную и полезную форму, директивы #define.

Формат: #define идентификатор (идентификатор, …, идентификатор) строка, где идентификатор – это символичный макроидентификатор. В скобках – это список параметров и строка – подставляемая строка. Обычно она включает параметры. Не должно быть пробелов между макроидентификатором и открывающими сковкой, в противном случае препроцессор будет рассматривать директиву как простую подстановку, а список параметров трактовать как подставляемую строку. Макроподстановка с аргументами аналогично функции. Иногда макроподстановку с аргументом называют псевдофункцией или макроопределением или макросом типа функция. Каждый раз при встрече такого макроса аргументы макроса будут замещаться реальным аргументом программы.

#include<stdio.h>

#define MIN(a,b) ((а)<(b))?(а):(b)

int main(void)

{int x,y;

x=10;

y=20;

printf(“Минимальное число это:%d”, MIN(x,y));

return 0;

}

При компиляции программы вместо MIN(a.b) подставляем выражение (1), причём вместо директивных параметров а и в подставляем реальные х и у. Таким образом, в результате подстановки print имеет вид:

printf(“Минимальное значение:%d”,((x)<(y)?(x):(y));

Необходимо отметить, что каждое появление параметра в появляемой строке должно заключаться в скобки. Вся подставляемая строка тоже должна заключаться в скобки.

Пример: макроопределение, вычисляющее квадрат некоторого значения.

#define KV(X) ((X) ´(X))

Запись макроопределения в виде

#define KV(X) X´X

#define KV(X) (X´X)

#define KV(X) (X)´(X)

приведёт к неверному результату.

Пример:

#define ESCAPE (N) bdos (6,27); bdos (6,(N))

#define CLEAR ESCAPE (69)

#define REVERS ESCAPE (112)

#define MERC ESCAPE (115)

#define NOMERC ESCAPE (116)

#define KURSOR G(x,y) ESCAPE (89); bdos (6,x+32); bdos (6,y+32)

#define NOLREVER ESCAPE (113)

Первое макроопределение обеспечивает передачи ESCAPE символа (десятичный код 27) и далее любого символа, который посылается на экран посредством параметра N. Для этой цели используется библиотечная функция bdos. Имеются функции управляющих последовательностей для установки режимов работы дисплея, а именно, режимов экрана, цвета, света. Можно задать следующие действия: очистить экран, установить «обратное» изображение, отменить «обратное» изображение, установить мерцание, отменить мерцание и т.д. Эти действия задаются с помощью десятичного символа-определителя. Так, например, второе макроопределение очищает экран (код символа определителя 69). Третье макроопределение устанавливает обратное изображение (код символа определителя 112). Код символа определителя 113 отменяет обратное изображение. 4-ое макроопределение устанавливает мерцание (код – 115). Пятое – отменяет мерцание (код – 116). 6-ое – обеспечивает передвижение курсора в позиции х, у (код – 89).

Просмотров: 1070


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.