Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
19
Добавлен:
01.04.2025
Размер:
797 Кб
Скачать
☆

Глава 4. Составление простейших программ

4.1. Препроцессор и его функции 4.2. Основные директивы препроцессора        4.2.1. Директива include        4.2.2. Директива   define        4.2.3. Директива undef 4.3. Структура и правила составления программ        4.3.1. Структура функции        4.3.2. Функция main()        4.3.4. Правила записи объявлений, операторов и комментариев        4.3.5. Пример простейшей программы

4.1. Препроцессор и его функции

По сравнению с другими языками программирования в языке C есть принципиально новое понятие – препроцессор, позволяющий облегчить написание и отладку C-программ.

Препроцессор – программа, используемая для обработки исходного текста программы на языке С до компиляции и выполняющая следующие действия:

  • поиск и включение в программу нужных внешних файлов;

  • изменение условий компиляции;

  • определение значений констант и т. д.

Препроцессор “общается” с программой при помощи директив. Директивы препроцессора представляют собой инструкции, записанные в тексте программы и выполняемые до ее трансляции. Директивы препроцессора позволяют изменить текст программы, например, заменить некоторые лексемы в тексте, вставить текст из другого файла, запретить трансляцию части текста и т. п. Директивы препроцессора отмечаются специальным маркером#. Знак # должен быть первым символом в строке, содержащей директиву. Между знаком # и первой буквой директивы могут находиться пробелы. После директив препроцессора точка с запятой не ставится.

Директивы препроцессора могут встречаться в любом месте программы, но обычно их стараются помещать в начале для удобства восприятия текста программы. Директивы, появляющиеся в любом месте исходного файла, применимы только к тексту, идущему после этой директивы. Написание директивы препроцессора завершается нажатием клавиши Enter. Для написания директивы в две строки в месте переноса следует нажать комбинацию клавиш [\] + [Enter], и директива продолжается в следующей строке.

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

4.2. Основные директивы препроцессора

4.2.1. Директива include

Директива включает в текст программы содержимое указанного файла и имеет две формы:

#include"имя файла"

#include <имя файла>

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

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

Заголовочный файл (объект-заголовок) снабжает компилятор необходимой информацией о данных и функциях, которые могут использоваться в программе, имеет расширение .h (header) и представляет собой текстовый файл. Заголовочный файл может содержать определение типов, прототипы функций, объявление внешних переменных (extern), директивы препроцессора и комментарии.

Любая C-программа должна содержать хотя бы одну директиву. Так, для реализации ввода/вывода должна присутствовать директива:

#include <stdio.h>

Файл stdio.h (standard input/output header) содержит необходимую информацию о средствах ввода/вывода информации:

  • определение типа данных FILE (поток ввода/вывода идентифицируется указателем на переменную типа FILE);

  • описание потоков stdin и stdout (ввод/вывод); по умолчанию эти файлы связаны с терминальным оборудованием (ввод с клавиатуры, вывод на дисплей);

  • файл вывода сообщений об ошибкахstderr;

  • определение макроса NULL (нулевой указатель, т. е. значение, не указывающее ни на какой объект);

  • определение макроса EOF (признак конца файла).

Для реализации других действий в программу с помощью данной директивы следует включать иные заголовочные файлы, например:

    • преобразование строк #include <string.h>

    • работа с математическими функциями #include <math.h>

    • библиотечные функции #include <stdlib.h>