Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Библиотеки и компоновка

С технической точки зрения возможно создание полезной функциональной С-программы, которая состоит только из операторов, написанных программистом. Но, это бывает чрезвычайно редко, поскольку стандартный С не предоставляет методов выполнения операций ввода/вывода. В связи с этим большинство программ содержит вызовы различных функций, находящихся в стандартных библиотеках С.

Язык С определяет стандартные библиотеки, предоставляющие функции, выполняющие наиболее типичные задачи. При вызове функции, которая не является частью написанной программы, компилятор запоминает ее имя. Позже компоновщик объединяет код, написанный программистом, с объектным кодом, уже находящимся в стандартных библиотеках. Этот процесс называется компоновкой.

Функции, хранящиеся в библиотеках, содержатся в переносимом формате. Это означает, что адресация памяти для различных инструкций машинного кода не полностью определена. Там содержится только информация о смещении. Когда программа компонуется с функциями стандартных библиотек, эти смещения памяти используются для создания физического адреса. Подробное объяснение  данного процесса можно узнать из технических руководств и книг.

Раздельная компиляция

Большинство коротких С-программ умещаются в одном исходном файле. По мере того, как программа растет, на ее компиляцию требуется все больше времени, а это раздражает. Поэтому С позволяет разбивать программы на куски, содержащиеся в нескольких файлах, и каждый файл может компилироваться отдельно. Файлы, будучи откомпилированными, подсоединяются вместе с подпрограммами библиотек для создания полного объектного кода программы. Преимущество раздельной компиляции заключается в том, что при изменении одного файла не требуется перекомпиляция всей программы.

Карта памяти с-программы

Откомпилированная С-программа создает и использует 4 логически разделенных области памяти, имеющих свое назначение. Первая область — это память, содержащая код программы. Следующая область предназначена для хранения глобальных переменных. Оставшиеся две —это стек и куча. Стек используется для самых различных целей при выполнении программы. Он содержит адреса возвратов вызываемых функций, аргументы, передаваемые в функции, и локальные переменные. Он также используется для хранения текущего состояния процессора. Куча - это область свободной памяти, которую программа может использовать для динамического выделения памяти под такие объекты, как списки и деревья.

Хотя точное физическое местоположение каждой области памяти зависит от способа компиляции программы, диаграмма ниже, показывает, как в общих чертах С-программа располагается в памяти.

Концептуальная карта памяти программы на С

Переменные, константы, операторы и выражения

Операторы манипулируют переменными и константами и тем самым образуют выражения. Все они - базовые элементы языков C/C++ . Данный раздел сайта знакомит более подробно с каждым элементом.

Идентификаторы

Имена, использующиеся для переменных, функций, меток и других определяемых пользователем объектов, называются идентификаторами. Идентификаторы могут состоять как из одного, так и из нескольких символов. Тем не менее в С только первые 31 символ являются значимыми. (В С++ — все символы значимые.) Первым символом должна быть буква или знак подчеркивания, а за ним могут стоять буквы, числа или знак подчеркивания. Ниже приведено несколько примеров корректных и некорректных имен идентификаторов.

Корректные

Некорректные

count

1count

test23

Hil.there

high_balance

high.,balance

В С прописные и строчные буквы трактуются по-разному. Следовательно, count, Count и COUNT — это три различных идентификатора. Идентификатор не может совпадать с ключевым словом С и не должен иметь такое же имя, как функция, уже содержащаяся в библиотеке С.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]