Си++/Препроцессорные директивы: различия между версиями
Greck (обсуждение | вклад) мНет описания правки |
Ixpict (обсуждение | вклад) |
||
Строка 38: | Строка 38: | ||
===Директива #undef=== |
===Директива #undef=== |
||
Директива #undef удаляет текущее определение идентификатора. Поэтому все встречающиеся появления идентификатора будут игнорироваться предпроцессором. Для удаления определения макро с использованием #undef, нужно задать только идентификатор макро, не задавая список параметров. |
|||
Можно применить директиву #undef к идентификатору, у которого нет определения. Тем самым пользователь получает дополнительную гарантию того, что данный идентификатор не определен. |
|||
Директива #undef обычно используется в паре с директивой #define для задания области исходной программы, в которой идентификатор имеет специальное значение. Например, некоторая функция исходной программы может иметь объявленные константы, которые задают значения среды работы, которые не влияют на остальную часть программы. Директива #undef также работает с директивой #if для управления условной компиляцией исходной программы. |
|||
===Условные директивы #if, #ifdef, #else, #endif, #elif=== |
===Условные директивы #if, #ifdef, #else, #endif, #elif=== |
Версия от 23:49, 18 января 2007
Препроцессор входит в любой компилятор программ на Си++ и любую среду разработки, рассчитаную на этот язык. Препроцессор обрабатывает исходный код программ до их компиляции. Препроцессорные команды, или директивы, управляют работой препроцессора.
Таких команд немного, они все начинаются со знака решётки (#
) и должны быть в начале строки исходного кода:
#define
- эта директива предусматривает определение макросов или препроцессорных идентификаторов, простейшее применение это замены в тексте программы
#include
- позволяет включать текст других файлов в текст вашей программы.
#undef
- отменяет действие директивы #define
#if
- организация условной обработки директив
#ifdef
- организация условной обработки директив
#else
- организация условной обработки директив
#endif
- организация условной обработки директив
#elif
- организация условной обработки директив
#line
- управление нумерацией строк в тексте программы
#error
- задает текст диагностического сообщения, выводящиеся при наличии ошибок
#pragma
- зависит от среды разработки
#
- нулевая, или пустая, директива, бездейственно пропускается
Директива #define
Директива #define
служит для замены часто использующихся констант, ключевых слов, операторов или выражений некоторыми идентификаторами. Идентификаторы, заменяющие текстовые или числовые константы, называют именованными константами. Идентификаторы, заменяющие фрагменты программ, называют макроопределениями, причем макроопределения могут иметь аргументы.
Основная форма синтаксиса директивы #define
:
#define идентификатор текст
Так например, в программе:
#define N 5 int main() { int a; a = N; return 0; }
Переменная а примет значение 5.
Директива #include
Директива #undef
Директива #undef удаляет текущее определение идентификатора. Поэтому все встречающиеся появления идентификатора будут игнорироваться предпроцессором. Для удаления определения макро с использованием #undef, нужно задать только идентификатор макро, не задавая список параметров.
Можно применить директиву #undef к идентификатору, у которого нет определения. Тем самым пользователь получает дополнительную гарантию того, что данный идентификатор не определен.
Директива #undef обычно используется в паре с директивой #define для задания области исходной программы, в которой идентификатор имеет специальное значение. Например, некоторая функция исходной программы может иметь объявленные константы, которые задают значения среды работы, которые не влияют на остальную часть программы. Директива #undef также работает с директивой #if для управления условной компиляцией исходной программы.