Разделы презентаций


Директивы условной компиляции. Предопределенные макросы.

Содержание

МОДУЛЬНОСТЬ В ЯЗЫКЕ C++ ПОДДЕРЖИВАЕТСЯ С ПОМОЩЬЮ:Директив препроцессора. Пространств имен. Классов памяти.ИсключенийРаздельной компиляции. строго говоря, раздельная компиляция не является элементом языка, а относится к его реализации.

Слайды и текст этой презентации

Слайд 1Директивы препроцессора
Директива #include.
Директива #define.
Директива #undef.
Директивы условной компиляции.
Предопределенные макросы.
Модульность — фундаментальный

аспект всех успешно работающих крупных систем.
Б. Страуструп

Директивы препроцессораДиректива #include.Директива #define.Директива #undef.Директивы условной компиляции.Предопределенные макросы.Модульность — фундаментальный аспект всех успешно работающих крупных систем.			Б. Страуструп

Слайд 2МОДУЛЬНОСТЬ В ЯЗЫКЕ C++ ПОДДЕРЖИВАЕТСЯ С ПОМОЩЬЮ:
Директив препроцессора.
Пространств имен.


Классов памяти.
Исключений
Раздельной компиляции.
строго говоря, раздельная компиляция не является элементом

языка, а относится к его реализации.
МОДУЛЬНОСТЬ В ЯЗЫКЕ C++ ПОДДЕРЖИВАЕТСЯ С ПОМОЩЬЮ:Директив препроцессора. Пространств имен. Классов памяти.ИсключенийРаздельной компиляции. строго говоря, раздельная компиляция

Слайд 3ПРЕПРОЦЕССОР.
Препроцессором называется первая фаза компилятора.
Инструкции препроцессора называются директивами.
Директивы

должны начинаться с символа #, перед которым в строке могут

находиться только пробельные символы.
ПРЕПРОЦЕССОР.Препроцессором называется первая фаза компилятора. Инструкции препроцессора называются директивами. Директивы должны начинаться с символа #, перед которым

Слайд 4Директива #include.

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

Слайд 5ДИРЕКТИВА #INCLUDE.
Директива #include вставляет содержимое указанного файла в ту

точку исходного файла, где она записана.
Включаемый файл также может

содержать директивы #include.
Поиск файла, если не указан полный путь, ведется в стандартных каталогах включаемых файлов.
Вместо угловых скобок могут использоваться кавычки (" ") — в этом случае поиск файла ведется в каталоге, содержащем исходный файл, а затем уже в стандартных каталогах.
Директива #include является простейшим средством обеспечения согласованности объявлений в различных файлах, она включает в них информацию об интерфейсе из заголовочных файлов.
ДИРЕКТИВА #INCLUDE.Директива #include вставляет содержимое указанного файла в ту точку исходного файла, где она записана. Включаемый файл

Слайд 6ЗАГОЛОВОЧНЫЕ ФАЙЛЫ.
Заголовочные файлы обычно имеют расширение .h и могут содержать:


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

шаблонов;
пространства имен;
директивы препроцессора;
комментарии.
ЗАГОЛОВОЧНЫЕ ФАЙЛЫ.Заголовочные файлы обычно имеют расширение .h и могут содержать: определения типов, констант, встроенных функций, шаблонов, перечислений;объявления

Слайд 7Заголовочные файлы.
В заголовочном файле не должно быть определений функций и

данных.
Эти правила не являются требованием языка, а отражают разумный способ

использования директивы.

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

Старые версии компиляторов могут не поддерживать это требование стандарта.

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

Слайд 8Заголовочные файлы.
Для каждого файла библиотеки С с именем имеется

соответствующий файл библиотеки C++ , в котором те же средства

описываются в пространстве имен std.

Например, директива #include обеспечивает те же возможности, что и #include , но при обращении к стандартным функциям требуется указывать имя пространства имен std.

Заголовочные файлы.Для каждого файла библиотеки С с именем имеется соответствующий файл библиотеки C++ , в котором те

Слайд 9Директива #define.

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

Слайд 10ДИРЕКТИВА #DEFINE.
Директива #define определяет подстановку в тексте программы.
Она используется

для определения:
символических констант:
#define имя текст_подстановки
(все вхождения имени заменяются на

текст подстановки);
макросов, которые выглядят как функции, но реализуются подстановкой их текста в текст программы:
#define имя( параметры ) текст_подстановки
символов, управляющих условной компиляцией.
Формат: #define имя
ДИРЕКТИВА #DEFINE.Директива #define определяет подстановку в тексте программы. Она используется для определения:символических констант: #define имя текст_подстановки(все вхождения

Слайд 12Директива #define.
#define MAX(x,y) ((x)>(y)?(x):(y))
Параметры макроса используются при макроподстановке, например, если

в тексте программы используется вызов макроса:
у = MAX(sum1, sum2);
он будет

заменен на:

у = ((suml)>(sum2)?(suml):(sum2));

Директива #define.#define MAX(x,y) ((x)>(y)?(x):(y))Параметры макроса используются при макроподстановке, например, если в тексте программы используется вызов макроса:у =

Слайд 13Директива #define.
Отсутствие круглых скобок может привести к неправильному порядку вычисления
поскольку

препроцессор не оценивает вставляемый текст с точки зрения синтаксиса.
Например:
если к

макросу
обратиться как
в результате подстановки получится выражение:

#define sqr(x) (x*x)

sqr(y+1)

(у+1*у+1)

Директива #define.Отсутствие круглых скобок может привести к неправильному порядку вычисленияпоскольку препроцессор не оценивает вставляемый текст с точки

Слайд 14Директива #define.
Макросы и символические константы унаследованы из языка С, при

написании программ на C++ их следует избегать.
Вместо символических констант предпочтительнее

использовать const или enum, а вместо макросов — встроенные функции или шаблоны.
Директива #define.Макросы и символические константы унаследованы из языка С, при написании программ на C++ их следует избегать.Вместо

Слайд 15Директива #undef.

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

Слайд 16ДИРЕКТИВА #UNDEF.
Директива #undef удаляет определение символа.
Используется редко, например, для

отключения какой-либо опции компилятора.
Формат: #undef имя

ДИРЕКТИВА #UNDEF.Директива #undef удаляет определение символа. Используется редко, например, для отключения какой-либо опции компилятора. Формат: 	#undef имя

Слайд 17Директивы условной компиляции.

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

Слайд 18ДИРЕКТИВЫ УСЛОВНОЙ КОМПИЛЯЦИИ.
Директивы условной компиляции #if, #ifdef и #ifndef применяются

для того, чтобы исключить компиляцию отдельных частей программы.

ДИРЕКТИВЫ УСЛОВНОЙ КОМПИЛЯЦИИ.Директивы условной компиляции #if, #ifdef и #ifndef применяются для того, чтобы исключить компиляцию отдельных частей

Слайд 19Директива #if.
Формат :
#if константное_выражение
......
[ #elif константное_выражение
......]
[ #elif константное_выражение
......]
[ #else
......]
#endif
Количество

директив #elif — произвольное.

Директива #if.Формат :#if константное_выражение		......	[ #elif константное_выражение		......]		[ #elif константное_выражение			......]	[ #else		......]#endif Количество директив #elif — произвольное.

Слайд 20Директива #if.
Пример:
// Пример условного включения
// различных версий заголовочного файла
#if

VERSION == 1
#define INCFILE "vers1.h“
#elif VERSION == 2
#define

INCFILE "vers2.h"
/* и так далее */
#else
#define INCFILE "versN.h“
#endif
#include INCFILE

В константных выражениях может использоваться проверка, определена ли константа, с помощью
defined (имя_константы).

Директива #if.Пример:// Пример условного включения // различных версий заголовочного файла#if VERSION == 1		#define INCFILE

Слайд 21Директивы #ifdef и #ifndef.
Формат :
#ifdef символ
// Расположенный ниже код компилируется,
//

если символ определен

#ifndef символ
// Расположенный ниже код компилируется,
// если символ

не определен

Действие этих директив распространяется до первого #elif, #else или #endif.

Директивы #ifdef и #ifndef.Формат :#ifdef символ// Расположенный ниже код компилируется,// если символ определен#ifndef символ// Расположенный ниже код

Слайд 22Директива #ifdef.
Пример:
// Директива #ifndef часто применяется для того,
// чтобы обеспечить

включение заголовочного
// файла только один раз
#ifndef HEADER_INCLUDED
#include "myheader.h"


#define HEADER_NCLUDED
#endif
Директива #ifdef.Пример:// Директива #ifndef часто применяется для того,// чтобы обеспечить включение заголовочного // файла только один раз#ifndef

Слайд 23Предопределенные макросы
В C++ определено несколько макросов, предназначенных в основном для

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

ошибки.
Предопределенные макросыВ C++ определено несколько макросов, предназначенных в основном для того, чтобы выдавать информацию о версии программы

Слайд 24Предопределенные макросы.
_cplusplus

определен, если программа компилируется как файл C++.
применяется, если требуется

переносить код из С в C++ и обратно.
Многие компиляторы при

обработке файла с расширением .с считают, что программа написана на языке С.
Использование этого макроса позволяет указать, что можно использовать возможности C++:
#ifdef _cplusplus
// Действия, специфические для C++
#endif
Предопределенные макросы._cplusplusопределен, если программа компилируется как файл C++.применяется, если требуется переносить код из С в C++ и

Слайд 25Предопределенные макросы.
_DATE_

содержит строку с текущей датой в формате месяц день

год.
_FILE_

содержит строку с полным именем текущего файла.
_LINE_

текущая строка исходного текста.
_TIME_

текущее

время.

printf("Ошибка в файле %s \n", _FILE_);
printf(" Дата компиляции - %s \n", _DATE_);
printf(“ Время компиляции:%s\n ", _FILE_, _TIME_);

Предопределенные макросы._DATE_содержит строку с текущей датой в формате месяц день год._FILE_содержит строку с полным именем текущего файла._LINE_текущая

Слайд 26Предопределенные макросы.
Пример:
// Директива #ifndef часто применяется для того,
// чтобы обеспечить

включение заголовочного
// файла только один раз
#ifndef HEADER_INCLUDED
#include "myheader.h"


#define HEADER_NCLUDED
#endif
Предопределенные макросы.Пример:// Директива #ifndef часто применяется для того,// чтобы обеспечить включение заголовочного // файла только один раз#ifndef

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика