Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ВМИиП.docx
Скачиваний:
6
Добавлен:
18.04.2019
Размер:
232.65 Кб
Скачать

1.6.1 Директива Include

Она служит для включения копий указанного файла либо в то место, где она находится, либо в те места, на которые делается ссылка на программные объекты (функции, константы, переменные и т.д.), либо в то место, из которых вызывается вызов этих объектов.

#include <ИмяФайла>

#include “Имя-Файла

#include Идентификатор-Макроса

Третья директива предполагает, что макрос, идентификатор которого указан, ранее предварительно был определен.

#include <vсl.h>

#include “Uniti.h”

Файл vcl.h содержит все объявления, которые используются в библиотеке визуальных компонент С-Билдера.

Компонента Uniti.h содержит описание всех визуальных и не визуальных компонент, которые включены в i-ую форму.

Example “Проект C++Builder”

1.6.2 Директивы #define и #undef

#define

Идентификатор-Константы

Замещающий-Текст

#define

PI

3.14159

#define

F1

0 x 70 (код в 16-ой системе)

#define

F2

0 x 71

#define

VK_F3

0 x 72

#define

VK_RETURN

0 x 0D

#define

VK_LEFT

0 x 25

#define

AnyKey

«Нажмите любую клавишу»

Обе директивы служат для создания символьных констант или макросов (без параметров).

Макрос представляет собой прикладную операцию, записанную символьными строками.

Формат: #define Имя-Константы Замещающий-Текст

#include <iostream.h>

#include <conio.h>

void main(void)

{

while (!kbhit()); ;

cout << "\n" << getch() ;

}

При подстановке текста с помощью директивы #define этот текст повторно обрабатывается препроцессором в поиске новых замен, чтобы разрешить вложенные определения. Т.о. решается вложенные определения символьных констант.

Формат определения макроса следующий:

#define Идентификатор-Мкроса(Агрументы) Замещающий-Текст

Вызов макроса: Имя-Макроса(Аргументы)

#define CIRC(x) (3.14159*(x)*(x))

S=CIRC(2); => S=(3.14159*(2)*(2));

S=CIRC(a+b); => S=(3.14159*(a+b)*(a+b));

S=(3.14159*a+(b*a)+b);

  1. Аргументы макросов желательно брать в круглые скобки, чтобы избежать ошибок.

  2. При работе с агрументами следует избегать одноместных операторов.

S=CIRC(a++); => S=(3.14159*(a++)*(a++));

/ - перенос макроса

Директива #undef онулирует определение символьных констант и макросов, которые были сделаны ранее.

Формат #undef Имя-Макроса Дествие?

1.6.3 Условные Директивы

#ifdef

#ifndef

# if

#endif

#else

#elif

(Пример: файл stdio.h, Lab02h.cpp)

Набор условных директив позволяет программисту управлять ходом компиляции С-программы и ходом выполнения директив препроцессора.

Условные директивы препроцессору:

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

# ifndef _PARMSAWP.H

#define _PARMSAWP.H

#define SWAP (T) inlide void SWAP (T & a, T & b) {T t=a; a=b; b=t}

#endif

Результат:

Inline void SWAP (double &a; double &b)

{double t=a; a=b; b=t}

  1. Они используются для включения и исключения отладочных фрагментов текстов программы.

# define DEBUG

#ifdef DEBUG

Операторы-отладки

#endif

#if (DEBUG)

{

}

Пример – текст C-программы в проекте (в файле РассылкаЛаб1).

(Вышлет пример)

Лекция 5 от 03.10.2011

Контрольная работа №1: 5

Вышлет все задачи первой контрольной на эмеил старосте.