Наш спонсор. Рекомендуем посетить.

120x90-p3m001.gif (5583 bytes)

Партнерская программа для русскоязычных сайтов

Обмен программами по FTP

6.3. Модули. Си-препроцессор.

В языке Паскаль существует понятие модуля – отдельной, самостоятельной части программы, предназначенной для использования программами или другими модулями. Подключение модуля осуществляется сразу же после имени основной программы в блоке описания модулей. Синтаксис подключения модулей таков: uses ИМЯ МОДУЛЯ.

Зарезервированное слово uses указывается перед именем модуля или списка модулей.

Транслятор Си имеет встроенное средство, расширяющее возможности языка и называемое макропроцессором или препроцессором. Он выполняет подстановки для макровызовов, проводит условную трансляцию и подключает указанные файлы. Для макропроцессора предназначены строки программы, начинающиеся с символа #. Команда для подключения библиотечного файла имеет вид: #include "ИМЯ ФАЙЛА". Обратите внимание, что в конце команды препроцессора нет точки с запятой.

Но вернёмся к модулю языка Паскаль. Структура модуля на Паскале такова:

  • Сам модуль хранится в отдельном файле. Имя файла совпадает с именем модуля.
  • Заголовок модуля состоит из зарезервированного слова unit и следующего за ним идентификатора (имени модуля).
  • Далее следует зарезервированное слово interface, обозначающее начало интерфейсной части модуля. Здесь описываются объекты (переменные, константы, процедуры и функции), доступные из других программ. Для процедур и функций указываются только заголовки.
  • Далее зарегистрированное слово implementation означает начало модуля. Описанные в этой части объекты скрыты от других программ.
  • В разделе реализации содержится также полное описание подпрограмм, чьи заголовки указаны в интерфейсной части. Описание подпрограмм могут иметь сокращённый заголовок, состоящий только из слова procedure или function, имени и точки с запятой.
  • Завершается модуль, как и программа, словом end, после которого ставится точка.
Пример использования модуля. Итак, в модулях языка Паскаль описываются процедуры и функции, которые могут использоваться в других программах. Вызываются такие процедуры и функции также как и обычные процедуры и функции.

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

Кроме того, в языке Паскаль имеется восемь стандартных модулей, в которых содержатся все стандартные процедуры и функции. Чтобы воспользоваться ресурсами стандартного модуля, необходимо указать его имя в разделе описания модулей.

Рассмотрим эти модули и, некоторые, эквивалентные им заголовочные файлы Си.

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

Dos – позволяет использовать возможности ОС MSDOS, не предусмотренные стандартами языка Паскаль.

Crt – содержит константы и переменные, подпрограммы для работы с консолью (при вводе с клавиатуры и при выводе на экран).

Graph – содержит типы, константы, переменные и подпрограммы позволяющие создавать графические изображения.

Overlay –используется для организации оверлейных программ.

Turbo3 и Graph3 – используются для совместимости с программами старых версий (Turbo Pascal 3.0).

 

<stdio.h> - содержит автоматически подключаемые ресурсы к любой программе. Имя этого файла нужно указывать.

<dos.h> - содержит описания библиотечных функций для обработки прерываний и соответствующих записей.

<graphics.h> - даны все необходимые определения для графического модуля. Для подключения стандартных функций графической системы необходимо подключение библиотеки graphics.lib.

<stdarg.h> - библиотека подпрограм-аналогов, работающих с va-функциями.

<math.h> - собержит описания библиотечных функций для вычисления некоторых математических функций.

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

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

#include “имя файла- Действие этой директивы приводит к включению в программу файла с заданным именем, который отыскивается в указанном для системы программирования каталоге.

При записи вида #include <имя файла> - поиск идёт в стандартных местах, определённых в системе программирования. Команды #include могут “вкладываться” одна в другую.

#define идентификатор подстановка – Вызывает замену в последующем тексте названного идентификатора на текст подстановки. Если имеет вид:

#define идентификатор(идентификатор, …, идентификатор) подстановка, причём между первым идентификатором и круглой скобкой нет пробела, то это определение макроподстановки с аргументами, т.е. при наличии длинных определений в подстановке, продолжающихся в следующей строке, в конце очередной строки с продолжением ставится символ \.

#if константное выражение – проверяет, будет ли отличаться от нуля выражение, составленное из констант.

#ifdef идентификатор – устанавливает, определён ли в данный момент указанный идентификатор, т.е. входил ли он в команду вида #define.

#ifdef идентификатор – проверяет, не определён ли в данный момент указанный идентификатор.

Внимание! За любой из этих команд может следовать произвольное число строк текста, возможно, содержащих инструкцию #else и заканчивающихся строкой #endif.

#undef идентификатор – приводит к тому, что указанный идентификатор считается неопределённым, т.е. не подлежит замене.

Использование команд препроцессора на конкретных примерах можно посмотреть в разделе 7.2.

Google
Rambler's Top100 Яндекс цитирования PageRank

Регистрация доменов .RU по минимальной ценеРегистрация в системе обмена ссылками