Фраза "Структурная переменная описывается с помощью переменной структурного типа" на мой Взгляд является тафтология. Из нее сложно понять суть утверждения. Хотелось бы полке понятного описания. |
Данные, символьные строки, директива #define
Условная компиляция обладает следующими достоинствами:
- Обеспечивается средство параметризации во время компиляции. Например, такая возможность может быть использована для генерации программ с различной структурой.
- Обеспечивается эффективное использование оперативной памяти, поскольку во время выполнения нет необходимости держать в памяти неиспользуемые коды программы.
- Обеспечивается возможность принятия решений во время компиляции, а не во время выполнения. Часто это оказывается более эффективным подходом.
Для условной компиляции используется инструкция препроцессора if. Она имеет две формы - с частью else и без нее:
#if - заголовок текстовые строки для случая "истина" #endif
и
#if - заголовок текстовые строки для случая "истина" #else текстовые строки для случая "ложь" #endif
где if - заголовок является управляющей строкой препроцессора, а текстовые строки могут содержать произвольный текст. Управляющая строка препроцессора if -заголовка содержит условие, на основе анализа которого производится выбор соответствующих текстовых строк:
#if константное_выражение
Пример:
#ifdef ABC Истина, если идентификатор ABC определен ранее командой #define. #ifndef идентификатор
Пример:
#ifndef ABC Истина, если идентификатор ABC не определен в настоящий момент. #else ... #endif
Если предшествующие проверки #if, #ifdef или #ifndef дают значение Истина, то строки от #else до #endif игнорируются при компиляции. Если эти проверки дают значение Ложь, то строки от проверки до #else, а при отсутствии #else - до #endif, игнорируются. Команда #endif обозначает конец условной компиляции.
Пример:
#ifdef DEBUG fprintf (stderr, "location. X=%d\n",x); #endif
При помощи команд препроцессора можно изменить номер текущей строки или имя компилируемого файла:
#line целая_константа "имя_файла"
Пример:
#line 20 "ABC"
Препроцессор изменяет номер текущей строки и имя компилируемого файла. Имя файла может быть опущено.
Замечание. Хотя препроцессоры и расширяют возможности языков программирования, их использование не лишено недостатков: использование препроцессоров требует дополнительного просмотра текста программы и, как следствие, добавочного времени.