лекции программирование / polevoy_cpp_2012_spring_lecture_05
.pdfЭтапы сборки программы
•препроцессор
•компилятор
•оптимизатор
•компоновщик
10.03.2010 |
cppNewb.ru |
11 |
Препроцессор
• директивы включения
#include
• макроопределения
#define, #undef
• директивы условной компиляции
#ifndef, #else, #endif
• #, ##
10.03.2010 |
cppNewb.ru |
12 |
Единица компиляции
•исходный файл → препроцессор → единица трансляции
•компилируется в собственный объектный файл
10.03.2010 |
cppNewb.ru |
13 |
Использование библиотеки
•включить заголовок
•использовать
–объявления
–переменные
–функции
•скомпоновать библиотеку
10.03.2010 |
cppNewb.ru |
14 |
Реализация модульности в С++
•функция – единица логики исполнения
•модуль (.cpp) – единица организации исходного кода
•общие объявления выносятся в
заголовок
10.03.2010 |
cppNewb.ru |
15 |
Заголовочные файлы
• стандартные
#include <стандартная_библиотека>
• пользовательские
#include “включаемая_компонента”
10.03.2010 |
cppNewb.ru |
16 |
Стандартная библиотека
•новые имена для библиотек Си
<stdio.h> → <cstdio>
•новые имена для библиотек С++
<iostream.h> → <iostream>
•не все библиотеки стандартные
<conio.h>
10.03.2010 |
cppNewb.ru |
17 |
Порядок поиска
•определяется реализацией
•может быть причиной “сложных” ошибок
•переменные окружения
•опции компилятора
•текущая папка
10.03.2010 |
cppNewb.ru |
18 |
Стражи включения
•предотвращение повторного определения
пример:
// In file defs.h
#ifndef DEFS_H_20080910 #define DEFS_H_20080910
.
.
.
#endif // DEFS_H_20080910
10.03.2010 |
cppNewb.ru |
19 |
.h может содержать
•директивы включения, макроопределения и директивы условной компиляции
•именованные пространства имен
•объявления имен типов, функций и
данных
•определения типов
•определения встроенных функций
объявления и определения шаблонов
•определения констант
•перечисления
10.03.2010 |
cppNewb.ru |
20 |