Исходные и объектные модули, процессы компиляции и связывания

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

Обычно процесс преобразования текста программы в исполняемый код является многоэтапным (по крайней мере – двухэтапным).

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

 

       
   


Компиляция Редактирование

Объектный модуль N
Исходный модуль N
связей

 

 


Алфавит языка

Алфавитом языка называется совокупность символов, используемых в языке.

В алфавит языка Си входят:

- прописные и строчные буквы латинского алфавита (A,B,C,…,Z,a,b,c,…,z);

- цифры (0,1,2,3,4,5,6,7,8,9);

- специальные знаки “ ‘ {} [] () | = + - * / % \ ; . , : ? < > _ ! & # ~ ^

- неизображаемые символы («обобщенные пробельные символы»), такие как пробел, табуляция, переход на новую строку.

В комментариях, строках и символьных константах могут использоваться и другие литеры, например русские буквы.

Комментарий формируется как последовательность символов, начинающаяся парой символов /* и завершенная парой символов */. Например:

/* Это комментарий */

В языке Си недопустимо вложение комментариев – это значит, что запись

/* text1 /* text2 */ text3 */ считается ошибочной.

 

Лексемы (C Tokens)

В программах на языке Си базовые элементы, опознаваемые компилятором, называются лексемами (английский термин - "token).". В их состав входят:

ключевые слова (keyword)

идентификаторы (identifier)

константы (constant)

строковые литералы (string-literal)

операторы (знаки операций) (operator)

знаки пунктуации (punctuator)

 

Ключевые слова (C Keywords)

Ключевые слова – это такие слова, которые имеют специальное значение для компилятора языка. В языке Си используются следующие ключевые слова:

 

auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while

Вы не можете переопределять ключевые слова у себя в программе. В рамках конкретной системы программирования состав ключевых слов может быть расширен.

 

По смысловой нагрузке служебные слова группируются следующим образом:

Спецификаторы типов:

char символьный

double вещественный двойной точности

enum перечисляемый

float вещественный

int целый

long длинное целый

short короткое целое

struct структура

signed знаковый

union объединение

unsigned беззнаковый

void отсутствие значения

typedef синоним обозначения типа

 

Квалификаторы типа:

const квалификатор объекта, имеющего постоянное значение

volatile квалификатор объекта, значение которого может измениться без явных указаний программиста.

 

Классы памяти:

auto автоматический

extern внешний

register регистровый

static статический

 

Элементы операторов:

break прервать

continue продолжить

do выполнять

for для

goto перейти

if если

return возврат

switch переключатель

while пока

 

Специальные идентификаторы:

default по умолчанию

case вариант

else иначе

sizeof размер

Punctuation and Special Characters.

Знаки пунктуации и специальные символы используются в программах на языке Си в различных целях, но в основном служат для организации работы транслятора. Они не специфицируют выполняемые операции. Некоторые знаки пунктуации одновременно являются знаками операций. Их конкретное назначение транслятор выявляет по контексту программы.

К знакам пунктуации относятся:

[ ] ( ) { } * , : = ; ... #

Эти символы имеют в Си специальное назначение, которое мы будем раскрывать по мере изучения языка. Заметим здесь лишь, что знак (pound sign (#)) может использоваться только в директивах препроцессора языка Си.

Operators – знаки операций.

В качестве знаков операций в языке Си могут выступать:

[ ] ( ) . –> ++ –– & * + – ~ ! sizeof / % << >> < > <= >= == !=

^ | && || ? : = *= /= %= += –= <<= >>= &= ^= |= , # ##

 








Дата добавления: 2016-04-14; просмотров: 2459;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.