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

Любая программа на С состоит из одной или нескольких функций.

Структура программы на языке С

В табл. перечислены 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

 

 

 

Словарь терминов

  • Исходный текст (или код) программы. Текст программы, который можно прочесть. Обычно его и называют программой. Исходный текст программы вводится в компилятор С.
  • Объектный код. Результат трансляции исходного текста в машинный код, который может быть прочитан и выполнен компьютером. Объектный код обычно вводится в компоновщик.
  • Компоновшик или редактор связей. Программа, которая компонует (связывает) отдельно оттранслированные модули в одну программу. Компоновщик также присоединяет функции стандартной библиотеки С и функции, написанные программистом. Результатом работы компоновщика является выполнимая программа.
  • Библиотека. Файл, содержащий стандартные функции, используемые программой. Этот файл содержит операции ввода/вывода и другие полезные функции.
  • Время компиляции. Время, затраченное компьютером на компиляцию программы.
  • Время выполнения. Время, затраченное компьютером на выполнение программы.