Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 142
Из них просматривают:
Аналоги: 38. Даташиты: 49. Инструкции: 1. Новости: 11. Опросы: 1. Остальное: 5. Партнёры: 1. Профиль пользователя: 4. Теги: 1. Форум: 31.
Участников: 2
Гостей: 140

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.
Оглавление

Директивы условной компиляции

Группа директив препроцессора, позволяющих в зависимости от значения определенных символов (макросов) изменять содержимое текста программы: #if, #ifdef, #ifndef, #else, #elif и #endif. Эти директивы сложные, т.е. состоят из более чем одной строки. Начинаются всегда с одной из первых трех директив, завершаются всегда директивой #endif. Оставшиеся директивы #else и #elif -дополнительные, могут и отсутствовать.

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

 

#if (VER > 5)

//строки, которые будут обработаны только в случае, если VER > 5

int x = 10;

#endif

 

В примере строка int x = 10 будет включена в текст программы только в том случае, если значение ранее описанного символа VER будет больше 5. Если же символ VER не определен вообще, или его значение менее 5 - строка будет удалена препроцессором.

 

#if (VER > 5)

int x = 10;

#else long x = 10;

#endif

 

В этом примере в текст программы будет введено определение переменной int x только для случаев, когда VER > 5, а в противном переменная х будет иметь тип long.

 

#if (VER > 5)

int x = 10;

#elif (VER > 3)

char x = 10;

#else long x = 10;

#endif

  
Этот пример показывает, как изменяется тип переменной х в зависимости от значения VER:

 

Значение VERТип переменной х
6 и болееint
4 или 5char
3 и менееlong


Количество директив #elif может быть любым.

 
Если не требуется анализировать значение символа, а достаточно лишь убедиться в том, что он определен, используется такой вариант:

 

#ifdef VER

int x = 10;

#endif

 

Если символ VER определен «выше по тексту» программы -определение переменной включается в текст программы, иначе -исключается.

 
Директива #ifndef позволяет что-то включить в текст программы, если символ НЕ описан ранее. Обе директивы могут содержать блок #else для указания альтернативного включения текста.

 
Не нужды упоминать, что указанные директивы могут «охватывать» любое количество строк программы, в том числе любые другие директивы препроцессора. Главное, о чем нельзя забывать: директивы препроцессора не могут использоваться для контроля содержимого переменных! То есть определить, существует или нет переменная var при помощи директивы #ifdef var можно, но будет ошибочной попытка проверить ее значение директивой #if var == 15.

 

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Семь раз отмерь, один раз отрежь. И не перепутай!