Библиотека и компоновка
Любая программа на С состоит из одной или нескольких функций.
Структура программы на языке С
В табл. перечислены 32 ключевых слова, определенные стандартом С89. Они же являются ключевыми словами языка С как подмножества C++. В табл. 1.3 приведены ключевые слова, добавленные стандартом С99. Набор ключевых слов вместе с формальным синтаксисом С составляет язык программирования С.
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizof | volatile |
Для наиболее эффективного использования возможностей конкретного компилятора программист обязательно должен ознакомиться с набором дополнительных ключевых слов.
В языке С различаются верхний и нижний регистры символов:
else — ключевое слово, a ELSE — нет. В программе ключевое слово может быть использовано только как ключевое слово,то есть никогда не допускается его использование в качестве переменной или имени функции.
Обязательно должна быть определена единственная главная функция main(), именно с нее всегда начинается выполнение программы. В хорошем исходном тексте программы главная функция всегда содержит операторы, отражающие сущность решаемой задачи, чаще всего это вызовы функций. Хотя main() и не является ключевым словом, относиться к нему следует как к ключевому. Например, не следует использовать main как имя переменной, так как это может нарушить работу транслятора.
Структура программы С изображена на рис., здесь f1() — fN() означают функции, написанные программистом.
Структура программы на языке С
Объявление глобальных переменных//главная фунцияint main(список параметров){ последовательность операторов} тип_возвращаемого_значения f1(список параметров){ последовательность операторов}... тип_возвращаемого_значения f2(список параметров){ последовательность операторов}Следует отметить, что на С в принципе возможно создать программу, содержащую только имена переменных и ключевые слова. Но обычно так не поступают, потому что в С нет ключевых слов для выполнения многих операций, например, таких как ввод/вывод, вычисление математических функций, обработка строк и т.п. Поэтому в большинстве программ присутствуют вызовы различных функций, хранящихся в библиотеке стандартных функций С.
Все компиляторы С поставляются вместе с библиотекой стандартных функций, предназначенных для выполнения наиболее общих задач. Стандарт С определяет минимальный набор функций, которые должны поддерживаться каждым компилятором. Но обычно библиотеки, поставляемые с компиляторами, имеют и много других, дополнительных, функций. Например, в стандартной библиотеке нет функций для работы с графикой, зато они есть почти в каждом компиляторе.
При вызове библиотечной функции компилятор "запоминает" ее имя. Потом компоновщик связывает код исходной программы с объектным кодом, уже найденным в стандартной библиотеке. Этот процесс называется компоновкой, или редактированием связей У некоторых компиляторов есть свой собственный компоновщик, другие пользуются стандартным компоновщиком, поставляемым вместе с операционной системой.
В библиотеке функции хранятся в переместимом формате. Это значит, что адреса машинных инструкций в памяти являются не абсолютными, а относительными. При компоновке программы с функциями из стандартной библиотеки эти относительные адреса, или смещения, используются для определения действительных адресов. Для того чтобы научиться программировать на С (а значит и понять дальнейший материал данной книги), этого объяснения достаточно, более подробно процесс настройки адресов изложен в других книгах.
Библиотека стандартных функций содержит большое количество функций, необходимых для написания программы. Это своего рода кирпичики, из которых программист собирает программу. Кроме того, программист может написать свою функцию и поместить ее в библиотеку.
Необходимо сказать несколько слов о языке C++. В нескольких словах, язык C++ — это объектно-ориентированный язык программирования, фундаментом которого является С. Язык С — это подмножество C++ и, следовательно, C++ — надмножество С.
В общем случае компилятор C++ можно использовать для компиляции программы, написанной на С. В настоящее время большинство компиляторов могут работать с программами, написанными как на С, так и на C++. Поэтому многие программисты используют компилятор C++ для компиляции программы, написанной на С. Но, поскольку C++ основан на стандарте С89, при написании программы С, рассчитанной на компилятор C++, допускается использование только тех возможностей языка, которые предусмотрены в С89
Словарь терминов
- Исходный текст (или код) программы. Текст программы, который можно прочесть. Обычно его и называют программой. Исходный текст программы вводится в компилятор С.
- Объектный код. Результат трансляции исходного текста в машинный код, который может быть прочитан и выполнен компьютером. Объектный код обычно вводится в компоновщик.
- Компоновшик или редактор связей. Программа, которая компонует (связывает) отдельно оттранслированные модули в одну программу. Компоновщик также присоединяет функции стандартной библиотеки С и функции, написанные программистом. Результатом работы компоновщика является выполнимая программа.
- Библиотека. Файл, содержащий стандартные функции, используемые программой. Этот файл содержит операции ввода/вывода и другие полезные функции.
- Время компиляции. Время, затраченное компьютером на компиляцию программы.
- Время выполнения. Время, затраченное компьютером на выполнение программы.