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

polevoi_cpp_2013_spring_lecture_05

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

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

пример:

#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