Препроцессор. Назначение и возможности. Директивы препроцессора. Условная компиляция

Страницы работы

Содержание работы

1.1.6. Препроцессор. Назначение и возможности

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

Директивы препроцессора:

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

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

#define идентификатор замещающий_текст

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

#define RECTANGLE_AREA(x,y) ((x)*(y))

Оператор

area = RECTANGLE_AREA(3,4);

примет вид:

area = ((3)*(4));

Для переноса на следующую строку в директиве используется знак \.

Условная компиляция даёт программисту возможность управлять выполнением директив препроцессора и компиляцией программного кода. Каждая условная директива препроцессора (#if) вычисляет значение целочисленного константного выражения. Пример:

#if !defined(NULL)

#define NULL 0

#endif

Эта директива определяет, была ли определена ранее константа NULL. Если нет, то производится её определение. Между директивами #if и #endif могут находиться и операторы программы, что позволяет задать условие их компиляции.

Похожие материалы

Информация о работе