Исходные и объектные модули, процессы компиляции и связывания
Программа на С состоит из отдельно компилируемых модулей. Модуль – это исходный файл компилятора С, содержащий набор логически связанных данных и функций. Функции не могут быть вложены одна в другую. Функции и данные могут быть глобальные, т.е. известные во всей программе, или статические – известные только в данном модуле.
Обычно процесс преобразования текста программы в исполняемый код является многоэтапным (по крайней мере – двухэтапным).
На первом этапе реализуется собственно компиляция, при которой тексты исходных модулей программы преобразуются в так называемые объектные модули, которые хотя и состоят в основном из машинных команд, но еще не могут выполняться. Процесс построения исполняемого модуля называется редактированием связей и заключается в установлении связей между отдельными объектными модулями и окончательной привязкой к памяти.
Компиляция Редактирование
|
|
Алфавит языка
Алфавитом языка называется совокупность символов, используемых в языке.
В алфавит языка Си входят:
- прописные и строчные буквы латинского алфавита (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; просмотров: 2435;