Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Макросы. Макросы с параметрами.

Читайте также:
  1. Определение общего числа возможных последовательностей, учитываемых в практических расчетах для эргодического источника сообщений с заданными параметрами.

Макросом или макроопределением называется идентификатор, связанный директивой #define с лексемой или последовательностью лексем. Макрос – это имя, которому директива #define задает некоторое значение. В тексте программы каждое вхождение имени заменяется заданным значением.

Определение макроса имеет вид: #define макрос значение (здесь макрос – это имя макроса, пробелы не допускаются)

Препроцессор заменяет макрос значением, связанным с ним директивой #define, всюду от точки его определения в программе до конца файла. Если макрос входит в состав символьной или строковой константы, то замена не производится.

Стандартом языка C++ предусмотрено несколько встроенных макросов.

Макрос Описание
__DATE__   __FILE__ __LINE__ __TIME__   Строка, представляющая в форме mmm dd yyyy дату, когда данный файл обрабатывался препроцессором Строка, представляющая имя текущего файла Целое, равное номеру текущей строки исходного файла Строка, представляющая в форме hh:mm:ss время, когда данный файл обрабатывался препроцессором

Кроме стандартных макросов системы программирования могут включать специфичные для них макроопределения. Так, в TC++ 3.0 определены 17 нестандартных макросов, изучить которые можно по системе помощи.

//Демонстрация работы директив препроцессора

#include <iostream.h>

#define greater_than(a,b) ((a) > (b)? 1: 0) /* greater_than(a,b): макрос с параметрами, проверяющий, больше ли первый аргумент второго. Аргументы в определении макроса следует заключать в скобки во избежание ошибок */

#define SMALL //SMALL - пустой макрос

void main()

{ int c = 5, d = 7;

if(greater_than(c, d))

cout << "\nc больше d";

else

cout << "\nc меньше d";

#undef greater_than //Отмена определения greater_than

#if defined (SMALL) //Использование операции defined

cout << "\nМакрос SMALL определен";

#else

cout << "\nМакрос SMALL не определен";

#endif

#undef SMALL //Отмена определения макроса SMALL

#ifdef SMALL //Использование директивы ifdef

cout << "\nМакрос SMALL определен";

#else

cout << "\nМакрос SMALL не определен";

#endif

#ifndef SMALL //Использование директивы ifndef

cout << "\nМакрос SMALL не определен";

#else

cout << "\nМакрос SMALL определен";

#endif

cout<<"\nИмя текущего файла "<<__FILE__;

cout<<"\nДата " << __DATE__; //Использование

cout<<"\nНомеp текущей строки "<<__LINE__; //встроенных

cout<<"\nВpемя "<<__TIME__; //макросов

}

В результате работы данной программы на экране появилось следующее:

c меньше d

Макрос SMALL определен

Макрос SMALL не определен

Макрос SMALL не определен

Имя текущего файла PREPROC.CPP

Дата Jul 01 2004

Номеp текущей строки 36

Вpемя 14:59:12


Дата добавления: 2015-07-08; просмотров: 221 | Нарушение авторских прав


Читайте в этой же книге: Строки символов представляют последовательность произвольных символов, заключенных в двойные кавычки, например, “Строка символов”, “String of characters”. | Процесс создания программы. Исходная и рабочая программы. Препроцессор, компилятор, редактор связей. | Целые типы в языке Си и операции над ними. Представление целых констант в различных системах счисления. | Операторы присваивания. Приоритет и порядок выполнения операторов. Привести примеры. | Цикл do…while. Программа вычисления квадратного корня. | Функции. Формальные параметры и фактические аргументы. Способ передачи аргументов в функции. Привести пример. | Массивы как аргументы функций. Функция сортировки массива методом пузырька. | Символы и символьные константы. Представления символов. Ввод и вывод символов. Привести примеры. | Привести пример программы по обработке строк. | Указатели и массивы. Адресная арифметика. |
<== предыдущая страница | следующая страница ==>
Препроцессор. Директивы препроцессора.| Указатели и адреса. Привести пример программы, использующей указатели.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)