При реализации стандарта языка одной из главных задач была задача обеспечения переносимости программы в исходных текстах на произвольную платформу (любая система пр-ия, ОС).
Директивы – это собственные конструкции, которые управляют компиляцией. В системе пр-ия есть препроцессор, который включается в работу перед компилятором, обрабатывает все препроцессорные конструкции, превращает их в конструкции языка. . Признаком директивы является #. Они являются регистрочувствительными, т.е. пишутся маленькими буквами.
#define
#define <ид> [<текст>]
#define <ид> (список параметров) <текст>
заменяет <ид> на <текст> (если его нет, заменяет пробелом). За ид. может идти последовательность операторов языка, фрагмент будет вставлен и выполнена #define FOR for (I=0;I<5;I++). Это макроопределение: #define sum (a,b) ((a)+(b)) – макрос, с=sum (5,6) – макровызов
#undef
отменяет действие #define – освобождает переменную для дальнейшего исп.
#include
#include “<полное имя файла>” – текущий каталог, каталог системы пр-ия – в строке Pas
#include <<полное имя файла>> - не ищет в рабочем каталоге, более слабая форма
#if, #elif, #else, #endif
#if <константное выражение>
<текст>
[#elif <константное выражение>
<текст>]
…..
[#else <текст>]
#endif
проверяется истинность (<>0) константного выражения. Если истина, то оставляем след. За if текст, а остальные стираются. Если ложь, проверяется следующее по порядку #elif. В контексте #if можно исп. #define. Если ид. был ранее определен, то получим истину
#if define (sum)
c=sum(5,6);
#else c=5+6;
#endif
#ifdef, #ifndef
упрощенный вариант директив условной компиляции
#ifdef <ид>
<текст>
[#elif <константное выражение>
<текст>]
…..
[#else <текст>]
#endif
#line
#line <константное выражение> [“имя файла”]
директива сообщает компилятору об изменении порядка нумерации строк в компилируемом файле и об изменении имя этого файла. Это изменение влияет на вид диагностических сообщений. При выполнении директивы счетчик откомпилированный строк принимает значение = конст. выраж. Для каждой последующей строки счетчик увеличивается на 1.
#error
директива обработки ошибок. #error <текст>. Компиляция останавливается с выдачей сообщения <текст>
# - пустая директива
#pragma
#pragma <последовательность символов> - изменяет условие компиляции в процессе самой компиляции. <последовательность символов> управляет работой компилятора. Например, #pragma pack(2) – изменение выравнивания переменных на границу, =2
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.