Урок 7. Препроцессоры
повесточка на день
Трещим про дамашку дэм
Часть 1: Директивы препроцессора
Часть 2: Многофайловые проекты
Тематические вопросы:
Практическое задание:
Контрольные вопросы
Обсуждаем мощно ваши проекты
Домашка ёу
3.55M
Category: programmingprogramming

Урок 7. Препроцессоры

1. Урок 7. Препроцессоры

Иван Владиславович Кашко
1

2. повесточка на день

1. Разбор домашнего задания
2. Препроцессоры (теория)
3. Препроцессоры (практика)
4. Обсуждаем мощно ваши проекты
5. Трещим за домашнюю работу
Иван Владиславович Кашко
2

3. Трещим про дамашку дэм

Иван Владиславович Кашко
3

4. Часть 1: Директивы препроцессора

Иван Владиславович Кашко
4

5.

1. Понятие препроцессора
Препроцессор — это часть компилятора, которая
обрабатывает текст программы перед её компиляцией. Он
отвечает за включение файлов, замену констант, запуск
условной компиляции. Это позволяет управлять процессом
компиляции и делать код более гибким.
Пример:
Иван Владиславович Кашко
5

6.

2. Директивы препроцессора
Директивы — команды, начинающиеся с символа `#`, которые
задают инструкции для препроцессора. Они включают
подключение файлов, определение макросов, условную
компиляцию.
Пример:
Иван Владиславович Кашко
6

7.

3. Препроцессорная директива #include
Директива `#include` подключает содержимое другого файла
в исходный код. Она облегчает повторное использование
кода и поддержку проектов. Включение происходит до
компиляции.
Пример:
Иван Владиславович Кашко
7

8.

4. Препроцессорная директива #define для создания констант
`#define` создаёт макросы — постоянные значения или
фрагменты кода, которые подставляются при компиляции. Он
удобен для определения именованных констант.
Пример:
Иван Владиславович Кашко
8

9.

5. Макроопределения с параметрами
Макросы могут иметь параметры, что делает их похожими на
функции. Они позволяют вставлять параметры в макрос,
увеличивая гибкость кода.
Пример:
Иван Владиславович Кашко
9

10.

6. Условная компиляция
Этот механизм позволяет включать или исключать части кода в
зависимости от условий, что полезно при различных
конфигурациях и платформах.
- директивы `#if` и `#else` позволяют задавать условия и
альтернативы.
- `#ifdef` и `#ifndef` проверяют наличие или отсутствие
определённых определений.
- `#undef` удаляет существующее определение.
Примеры:
Иван Владиславович Кашко
10

11. Часть 2: Многофайловые проекты

Иван Владиславович Кашко
11

12.

1. Что такое многофайловый проект
Многофайловый проект состоит из нескольких исходных (`.c`) и заголовочных
(`.h`) файлов, которые объединяются в одну программу. Он облегчает
организацию, поддержку и повторное использование кода.
2. Зачем нужно разделять проект на несколько файлов
Разделение позволяет структурировать проект, выделить интерфейсы и
реализации, а также ускоряет компиляцию и облегчает работу с большими
кодовыми базами.
3. Как создать многофайловый проект
Для этого создают отдельные файлы с исходным кодом и заголовки, используют
`#include` для подключения компонентов. Потом с помощью компилятора
компонуют их в единый исполняемый файл, например командой:
Иван Владиславович Кашко
12

13. Тематические вопросы:

1. Что делает директива `#define`?
2. Чем отличается `#ifdef` от `#ifndef`?
3. Для чего используют `#include`?
4. Что такое многофайловый проект?
5. Почему разделение проекта на файлы удобно?
Иван Владиславович Кашко
13

14. Практическое задание:

Создайте двухфайловый проект: один файл — `main.c`, содержащий
функцию `main()`, и второй — `utils.h` и `utils.c`, где определена функция `int
add(int a, int b)`. Используйте `#include` для подключения заголовка и
вызовите функцию из `main()`. Также примените `#define` для установки
константы и `#ifdef` для условного вывода сообщения. Компилируйте
проект командой `gcc`.
Иван Владиславович Кашко
14

15. Контрольные вопросы

1.Что происходит с памятью, когда
создается объект структуры?
2.Для чего нужно ключевое слово typedef?
3.Для чего нужны структуры в С++?
4.Что такое вложенные структуры?
Иван Владиславович Кашко
15

16. Обсуждаем мощно ваши проекты

Иван Владиславович Кашко
16

17. Домашка ёу

Иван Владиславович Кашко
17
English     Русский Rules