Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры прога 2.docx
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
83.31 Кб
Скачать

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

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

22. Директивы #define и # undef.

#define

Директива #define имеет два формата:

  1. #define идентефикатор текст_подстановки

  2. #define идентефикатор (список параметров) текст_подстановки

Формат 1 определяет простую подстановку и используется для того, чтобы связать идентефикатор с константой, ключевыми словами, операторами, выражениями. Идентефикатор для обозначения констант наз именованым (символическим) константами. Идентефикаторы для обозначения операторов и выражений наз макрокомандами. В тексте исходного файла все вхождения идентефикатора заменяются на текст подстановки

#define PI 3.1415

l=2*PI*r;

l=2*3.1415*r;

Идентефикатор заменяется если он образует лексему. Идентефикатор не заменяется если он является частью строки или другого идентефикатора.

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

Формат2 : макроопределение с параметрами.

В исходном тексте, следующим за #define каждое вхождение идентефикатор (список параметров) заменяется на текст подстановки с заменой формальных параметров фактическими аргументами.

Каждое имя в списке формальных параметров должно быть уникальным. В определении макроподстановки может участвовать более ранние define определения.

Замечания:

1.пробелы в макроопределениях не допускаются, хотя они возможны в тексте подстановки.

2.отсутствует точка с запятой(;)

3.следует использовать круглые скобки

4.обычно для идентефикаторов используются заглавные буквы.

# undef

# undef идентефикатор

Эта директива отменяет текущее определение идентефикатора, заданного в директиве. Все последующие замены идентефикатора будут игнорироваться. Чаще всего используются с #defain для создания области в программе, в к-рой идентефикатор может быть сопоставлен с другим значением. Директива #undef может использоваться и по отношению к идентефикатору, к-рый ранее не был определен.

#undef getchar

int getchar (void) { - - -}

23.1,# include

# include “спецификатор_маршрута”

# include <спецификатор_маршрута>

Эта директива добавляет содержимое заданного файла включения к другому файлу так, как если бы этоот файл появился в точке, где записана директива. Данные форматы отличаются способом поиска препроцессора включаемого файла. Если спецификатор_маршрута не полный и заключен в “ ”, то препроцессор начинает поиск в текущем рабочем каталоге. Если в этом каталоге файл не найден или <спецификатор_маршрута>, то поиск файла включения осуществляется в стандартных системных каталогах.

23,2,.# include

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