Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

polevoi_cpp_2013_spring_lecture_05

.pdf
Скачиваний:
12
Добавлен:
20.04.2015
Размер:
121 Кб
Скачать
☆

Условная компиляция (пример)

пример:

#if (_MSC_VER < 1500)

//...

#else

//...

#endif

30.03.2013

11

Стандартные макросы

__FILE__

__LINE__

__DATE__

__TIME__

__cplusplus

30.03.2013

12

Использование библиотеки

•включить заголовок

•использовать

–объявления

–переменные

–функции

•скомпоновать библиотеку

30.03.2013

13

Реализация модульности в С++

•функция – единица логики исполнения

•модуль (.cpp) – единица организации исходного кода

•общие объявления выносятся в заголовок

30.03.2013

14

Заголовочные файлы

• стандартные

#include <стандартная_библиотека>

• пользовательские

#include “включаемая_компонента”

30.03.2013

15

Порядок поиска

•определяется реализацией

•может быть причиной “сложных” ошибок

•переменные окружения

•опции компилятора

•текущая папка

30.03.2013

16

Правило единственного определения (ODR)

•в пределах единицы трансляции тип данных, функция или объект не могут иметь более одного определения

•в пределах программы (совокупности всех единиц трансляции) объект или не-inline функция не могут иметь больше одного определения

30.03.2013

17

Проблема повторного включения

// in file b.h #include “a.h”

// in file b.h

// in file c.h

#include “a.h”

#include “a.h”

// in file d.h #include “b.h” #include “c.h”

30.03.2013

18

Стражи включения

•предотвращение повторного определения

пример:

// In file defs.h #ifndef DEFS_H_20080910 #define DEFS_H_20080910

.

.

.

#endif // DEFS_H_20080910

30.03.2013

19

.h может содержать

•директивы включения, макроопределения и директивы условной компиляции

•именованные пространства имен

•объявления имен типов, функций и данных

•определения типов

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

•определения констант

•перечисления

30.03.2013

20