- •1. Технологии программирования.
- •1.1 Введение.
- •1.2 Модульное программирование.
- •1.3 Нисходящее программирование.
- •1.4 Структурное программирование.
- •1.5 Понятия объекта, класса объектов.
- •1.6 Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.
- •2.1.1 Общие сведения о программах, лексемах и алфавите языка
- •2.1.3. Идентификаторы и служебные слова
- •3. Константы: целые, вещественные (с плавающей точкой), перечислимые, символьные (литерные), строковые (строки или литерные строки)
- •4. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций.
- •4.1 Знаки операций
- •4.2 Унарные операции
- •4.3 Бинарные операции.
- •4.4 Приоритеты операций
- •5. Переменные. Определения и описания. Спецификатор typedef.
- •5.1 Переменные. Определения и описания.
- •5.2 Класс памяти
- •6. Базовые и производные типы данных. Массивы. Указатели, ссылки и адреса. Структуры. Поля битов. Объединения
- •6.1 Массивы
- •6.2 Указатели, ссылки и адреса объектов
- •6.3 Структуры
- •6.4 Поля битов
- •6.5 Объединения
- •7. Операторы
- •7.1 Оператор выражение
- •7.2 Пустой оператор
- •7.3 Составной оператор
- •7.4 Оператор if
- •If (выражение) оператор-1; [else оператор-2;]
- •7.5 Оператор switch
- •7.6 Оператор break
- •7.7 Оператор for
- •7.8 Оператор while
- •7.9 Оператор do while
- •7.10 Оператор continue
- •7.11 Оператор return
- •7.12 Оператор goto
- •8. Функции
- •8.1 Определения, описания и вызовы функций
- •8.2 Начальные (умалчиваемые) значения параметров.
- •8.3 Функции с переменным количеством параметров
- •8.4 Перегрузка функций.
- •8.5 Ссылки и параметры-ссылки.
- •8.6 Шаблоны функций.
- •Основы ооп
- •9.1 Тип данных - класс.
- •9.2 Доступность компонентов класса
- •9.3 Конструктор и деструктор
- •9.4 Компоненты-данные и компоненты-функции. Статические и константные компоненты класса
- •10. Указатели на компоненты класса
- •10.1 Указатели на компоненты- данные.
- •10.2 Указатели на компоненты- функции.
- •10.3 Указатель this
- •11. Друзья классов
- •11.1 Дружественная функция
- •11.2 Дружественный класс
- •12. Наследование
- •12.1 Определение производного класса.
- •12.2 Конструкторы и деструкторы производных классов
- •13. Полиморфизм
- •13.1 Виртуальные функции.
- •13.2 Абстрактные классы
- •14. Шаблоны классов
- •15. Перегрузка операций
- •15.1 Общие сведения о перегрузке стандартных операций
- •15.2 Перегрузка унарных операций
- •15.3 Перегрузка бинарных операций
- •15.5 Перегрузка операции вызова функции
- •15.6 Перегрузка операции присваивания
- •15.7 Основные правила перегрузки операций.
- •16. Обработка исключительных ситуаций
- •16.1 Операторы try, throw, catch
- •16.2 Универсальный обработчик исключений
- •17. Структура Windows-приложения
- •17.2 Структура каркасного Windows-приложения
- •17.3 Главная функция WinMain()
- •17.4 Сообщения Windows
- •17.5 Класс окна. Регистрация и его характеристики
- •17.6 Создание и показ окна
- •17.7 Цикл обработки сообщений
- •17.8 Оконная функция
- •17.9 Завершение выполнения приложения
- •18. Препроцессор
- •18.1 Общие пpеобpазования
- •18.2 Директивы Препроцессора
- •18.3 Подключаемые файлы
- •18.4. Директива '#include'.
- •18.5 Однократно подключаемые файлы
- •18.6 Макросы
- •18.7 Стрингификация
- •18.8 Объединение
- •18.9 Удаление макросов
- •18.10 Условия
- •19. Разработка Windows приложений с использованием библиотеки классов mfc (microsoft foundation class library)
- •19.1 Некоторые сведения о программировании Windows-приложений
- •19.2 Преимущества использования mfc
- •19.4 Библиотека mfc
- •20. Простейшие mfc-приложения
- •20.1 Приложение без главного окна
- •20.2 Приложение с главным окном
- •20.3 Обработка окном сообщений
18.2 Директивы Препроцессора
Большинство возможностей препроцессора реализуется с использованием специальных директив.
Директивами препроцессора являются строки, начинающиеся с символа '#', за которым следует идентификатор, называемый именем директивы. Разрешается использование пробелов перед и после символа '#'.
Существует строгий набор директив. Программы не могут определять новые директивы.
Некоторые директивы требуют наличия аргументов, которыми является оставшаяся часть строки отделенная от имени директивы одним или несколькими пробелами.
Обычно, директива препроцессора не может занимать более одной строки. Хотя, она может быть разбита с помощью последовательности backslash-newline.
18.3 Подключаемые файлы
Подключаемый файл это файл, содержащий определения функций и переменных, а также макроопределения вместе с некоторыми исходными файлами. Для использования в программе подключаемых файлов применяется директива препроцессора '#include'.
Подключаемые файлы используются для двух целей:
Системные подключаемые файлы используются для определения интерфейсов к составляющим операционной системы. Они подключаются для предоставления объявлений и определений, требуемых для работы с системными вызовами и библиотеками.
Подключаемые файлы пользователя содержат определения для интерфейсов между исходными файлами программы.
Включение подключаемого файла в программу дает такой же результат, как при копировании этого файла в каждый исходный файл этой программы. Подобное копирование занимает много времени и побуждает возникновение ошибок. При использовании подключаемых файлов все объявления и определения переменных и функций находятся в одном файле и при необходимости могут быть изменены. Обычно подключаемые файлы заканчиваются на '.h' и следует избегать использования других стандартов.
18.4. Директива '#include'.
Как файлы пользователя, так и системные файлы включаются в программу с использованием директивы препроцессора '#include'. Она имеет три модификации:
'#include <FILE>
Эта модификация используется для подключения системных файлов. При ее выполнении производится поиск файла с именем FILE в списке указанных заранее каталогов, а затем в стандартном списке системных каталогов. С помощью опции '-I' указываются каталоги для поиска подключаемых файлов. Опция '-nostdinc' запрещает поиск в стандартных системных каталогах и производит поиск только в указанных каталогах.
Синтаксис такой модификации директивы '#include' довольно специфичен, потому как комментарии внутри ' ' последовательность символов '/*' не начинает комментарий,
а указанная директива включает в программу файл с именем 'x/*y'.
Аргумент FILE не может содержать символа '>', хотя он может содержать символ '<'.
'#include "FILE"'
Эта модификация применяется для подключаемых файлов для программ пользователя. Сначала файл FILE просматривается в текущем каталоге, а затем в каталогах для системных подключаемых файлов. Текущим каталогом является каталог текущего обрабатываемого файла. Он просматривается в первую очередь, так как предполагается, что в нем находятся файлы, имеющие отношение к текущему обрабатываемому файлу. (Если указана опция '-I-', то текущий каталог не просматривается.)
Аргумент FILE не может содержать символов '"'. Символы backslash интерпретируются как отдельные символы, а не начало escape последовательности. Таким образом, директива '#include "x\n\\y"' указывает имя файла, содержащего три символа backslash.
'#include ANYTHING ELSE'
Эта модификация называется "вычисляемой директивой #include". Любая директива '#include', не соответствующая ни одной из модификаций, рассмотреных выше, является вычисляемой директивой. Строка ANYTHING ELSE проверяется на наличие соответствующего макроса, значение которого затем заменяет его название. Полученная в результате строка должна уже в точности соответствовать одной из рассмотренных выше модификаций (то есть имя подключаемого файла должно быть заключено в кавычки или угловые скобки).
Эта возможность позволяет определять макросы, что дает возможность изменять имена подключаемых файлов. Эта возможность, например, используется при переносе программ с одной операционной системы на другие, где требуются разные подключаемые файлы.