Программирование >>  Перегруженные имена функций и идентификаторы 

1 [ 2 ] 3 4 5 ... 210


Следующие примеры иллюстрируют некоторые комментарии:

/* Comments can separate and document lines of a program. */

/* Comments can contain keywords such as for and while */

/*******************************************

Comments can occupy several lines.

*******************************************/

Так как комментарии не могут содержать вложенных комментариев, то следующий пример будет ошибочным:

/* You cannot/* nest */ comments */

Компилятор распознает первую комбинацию */ после слова nest как конец комментария. Затем, компилятор попытается обрабатывать оставшийся текст и выработает сообщение об ошибке. Чтобы обойти компиляцию комментариев больших размеров, нужно использовать директиву #if препроцессора.

Лексемы

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

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



Например, рассмотрим следующее выражение:

В этом примере компилятор вначале создает из трех знаков плюс самую длинную из возможных операций ++, а затем обработает оставшийся знак +, как операцию сложения +. Выражение проинтерпретируется как а не как

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

Исходная программа

Исходная программа - это совокупность следующих объектов: директив, указаний компилятору, объявлений и определений. Директивы задают действия препроцессора по преобразованию текста программы перед компиляцией. Указания компилятору - это команды, выполняемые компилятором во время процесса компиляции. Объявления задают имена и атрибуты переменных, функций и типов, используемых в программе. Определения - это объявления, определяющие переменные и функции.

Определение переменной в дополнении к ее имени и типу задает начальное значение объявленной переменной. Кроме того, определение предполагает распределение памяти для переменной.

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

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

Нетривиальная программа всегда содержит более одного определения функции. Функция определяет действия, выполняемые программой.



В следующем примере иллюстрируется простая исходная программа на языке Си.

int x = 1; /* Variable definitions */

int y = 2;

extern int printf(char *,...);/* Function declaration */

main () /* Function definition

for main function */

int z; /* Variable declarations */

int w;

z = y + x; /* Executable statements */

w = y - x;

printf( z = /od \nw = /od \n , z, x);

Эта исходная программа определяет функцию с именем main и объявляет функцию printf. Переменные x и y задаются своими определениями. Переменные z и w только объявляются.

Исходные файлы

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

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

Исходный файл не обязательно должен содержать выполняемые операторы. Иногда полезно размещать описания переменных в одном файле с тем, чтобы использовать их путем объявления ссылок из других файлов. В этом случае определения становятся легко доступными для поиска и модификации. Из тех же самых соображений константы и макросы часто организуют в отдельных #include - файлах и включают их, если требуется, в исходные файлы.



1 [ 2 ] 3 4 5 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика