> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/2.-struktura-programmy.-primer-prostoi-programmy./dop.-voprosy-i-dop.-material-k-pervomu-bloku-voprosov..md).

# Доп. вопросы и доп. материал к первому блоку вопросов.

## :green\_book: - Материал :question: - Вопросы

:green\_book:Функция – абстракция над действиями;  Типы данных(простые и составные) – абстракции над данными&#x20;

:green\_book: Модуль в языке С - пара файлов .c и .h

:green\_book:Все директивы, прототипы, функции, size для памяти и т.д., присутствующие в практическом вопросе помогут не расписывать теорию ( т.е. на практике сможем объяснять).

:question:Для чего нужна директива?

Обычно используются для упрощения изменения исходных программ и компиляции в разных средах выполнения.&#x20;

:question:Что происходит с #include и #define после запуска программы?

:question:Как работает директива препроцессора?

:question:Двойные и кавычки уголком - различие?

<...> - подключение стандартных библиотек, заголовки, включенные в реализацию, \
"..." - подключение любых других.

:question:Что значит подгружает файл? (Подкл заголовочный файл, убирает проблемы с двойной подстановкой)                                                                          &#x20;

:green\_book:Линковка – связывание файлов .о/.obj

:question:Что происходит на этапе линковки? (Добавили хедер, далее…(компилятор однопроходный, бла бла)

:question: объяснить, как всё связывается между собой (например сторонние библиотеки; как происходит реализация)

:question:Динамическая и статическая линковка? (Объяснить как происходит добавление файлов(где он возьмет эти файлы сторонних библиотек))

:question:На что влияет расширение у файла? (на обработку не влияет) – в случае с виндой: windows будет пытаться предложить как его обрабатывать

:green\_book:У файлов в разных ОС можно посмотреть Magic numbers - у файлов первые 3-4 цифры, хранящие информацию о типах файлов.

![](https://3644367790-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FUZOUsWlbTNqsUYoinAff%2Fuploads%2FwEFCF8v1S2u7pYKPrIMz%2Fimage.png?alt=media\&token=668223ac-728d-4cf8-a2f6-39f28a28becb)

:green\_book:Прототипы (Формальные и фактические параметры(бонусный вопрос))

:question:Чем отличается define от const

`#define` - это директива препроцессора, он просто выполняет замену строки текста на своё содержимое.

`const` - это квалификатор типа, говорящий, что переменная не должна меняться после инициализации. Но эта инициализация где-то должна произойти, и от константности можно вручную избавиться при помощи const\_cast(С++).

`const` имеет тип данных и подставляется на этапе компиляции, а `define` не может иметь тип данных и выполняется на этапе препроцессинга.

:green\_book:После препроцессинга комментариев не будет, директив тоже. Комментарии удалятся, макросы вставятся, include подключит .h
