Препроцессор языка «C»
В языке «С» предусмотрk 818y2418i 7;ны определенные расширения языка с помощью простого макропредпроцессора. одним из самых распрострk 818y2418i 2;ненных таких расширений, которое мы уже использовали, является конструкция #DEFINE; другим расширением является возможность включать во время компиляции содержимое других файлов.
Для облегчения работы с наборами конструкций #DEFINE и описаний (среди прочих средств) в языке «С» предусмотрk 818y2418i 7;на возможность включения файлов. Любая строка вида:
include "filename"
filename #define extern #include
#include
#define tes 1
#define #define yes printf("yes")
#define
define begin
if (i > 0) then
begin
a
b
end
max
#define max(a, b) ((a) > (b) ? (a (b))
x = max(p+q, r+s);
x = ((p+q) > (r+s) ? (p q r s
max
max
#define square(x) x*x
square(z+1))
getchar putchar определены как макросы (очевидно PUTCHAR должна иметь аргумент), что позволяет избежать затрk 818y2418i 2;т на обращение к функции при обработке каждого символа.
swap(x,y) int
![]() |
Существует еще один момент, о котором следует предупредить читателя, - определения и объявления совместно используются несколькими файлами. Мы бы хотели, насколько это возможно, центрk 818y2418i 2;лизовать эти объявления и определения так, чтобы для них существовала только одна копия. Тогда программу в процессе ее развития будет легче и исправлять, и поддерживать в нужном состоянии. Для этого общую информацию расположим в заголовочном файле calc.h #include была рассмотрk 818y2418i 7;н выше).
Неизбежен компромисс между стрk 818y2418i 7;млением, чтобы каждый файл владел только той информацией, которая ему необходима для работы, и тем, что на практике иметь дело с большим количеством заголовочных файлов довольно трудно. Для программ, не превышающих некоторого среднего размера, вероятно, лучше всего иметь один заголовочный файл, в котором собраны вместе все объекты, каждый из которых используется в двух различных файлах; так мы здесь и поступили. Для программ больших размеров потрk 818y2418i 7;буется более сложная организация с большим числом заголовочных файлов.
|