русс | укр

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

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

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

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


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

Директива #undef.


Дата добавления: 2015-06-12; просмотров: 569; Нарушение авторских прав


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

#undef идентификатор.

Например,

/* Здесь three не определено */

#define three 3

/* Здесь three определено как число 3*/

#undef three

/* Здесь three снова не определено */

#define three 33

/* Здесь three определено с другим значением, как число 33*/

Эту команду можно использовать не только для изменения значений макроса, а просто для отмены действия макроса, то есть для локализации имён макросов в тех частях программы, где они необходимы. Если в приведенном выше примере директиву

#define three 33

не написать, то макрос three будет локализован только от директивы #define three 3 до директивы #undef three.

§2. Директива #include (включение файлов).

 

Команда используется для включения текста из другого файла и может иметь следующие три формы записи:

#include <имя_файла>

#include “имя_файла”

#include имя

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

заголовки (прототипы) функций. Рекомендуется таким файлам приписывать расширение .h;

определение одной или нескольких функций (тексты функций);

любая, желательно логически завершённая часть программы, не оформленная в виде функции;

объявления констант, типов (например, структур, объединений, перечислений и др.), переменных;

любые директивы препроцессора, в том числе и #define. В таком случае говорят о вложенных подключениях файлов;

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



С помощью рассматриваемой команды можно исходный текст программы разместить не в одном файле, как мы это делали раньше, а в нескольких. Рассмотрим это на примере.

Пример. Условие задачи для вычисления определённого интеграла смотри в §3 главы 7. Для сравнения ту же задачу решим, подготовив и сохранив в одной и той же папке, например, D:\\ANA\\cpp\\includе\\Integral , следующие четыре файла с текстом программы:

1) Файл MyInclude.cpp содержит подключение стандартных заголовочных файлов, которые используются в большинстве приложений:

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

2) В файле Prototip.h размещаем прототип функции Integral:

float Integral(float, float, float, float (*Fun)(float));

В одном файле можно разместить прототипы нескольких функций.

3) В файле Integral.cpp будет находиться текст функции, которая реализует формулу Симпсона для вычисления определённого интеграла от произвольной функции.

float Integral (float a, float b, float n, float (*Fun)(float))

{ float h,s1=0,s2=0;

h=(b-a)/n;

for(int i=2;i<=(n-2);i+=2)

s1+=(*Fun)(a+i*h);

for(int i=1;i<=(n-1);i+=2)

s2+=(*Fun)(a+i*h);

return ((b-a)/(3*n)*((*Fun)(a)+2*s1+4*s2+(*Fun)(b)));

}

4) В файле MetodSimpsona.cpp подключаем описанные выше файлы, размещаем головную функцию main, в которой вызываем функцию Integral и текст конкретной функции, для которой будем вычислять определённый интеграл

#include "D:\\ANA\\cpp\\includ\\Integral\\MyInclude.cpp"

#include "D:\\ANA\\cpp\\includ\\Integral\\Prototip.h"

float Function(float);

void main()

{ float a,b,n,I; a=-1; b=1; n=100;

I=Integral(a,b,n,Function);

cout<<I;

getch(); }

#include "Integral.cpp"

float Function(float x)

{

return (x*x*sqrt(1-x*x)); }

Для выполнения программы открываем файл MetodSimpsona.cpp, обычным образом компилируем его и выполняем. Команды #include “соберут” все части программы вместе. Для вычисления определённого интеграла от другой функции достаточно внести небольшие изменения в файл MetodSimpsona.cpp, например, изменить алгоритм вычисления подинтегральной функции и (или) пределы интегрирования и (или) точность (n).

 

§3. Директивы условной компиляции.

 

Существует несколько директив, которые в зависимости от условия включают или не включают строки в текст программы для дальнейшей её компиляции. Этот процесс называется условной компиляцией и используется для подготовки различных версий одной и той же программы.

 



<== предыдущая лекция | следующая лекция ==>
Макрос с аргументами. | Директива #if.


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.804 сек.