Условная компиляция.

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

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

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

Приводит к эффективному использованию памяти, так как ненужный код не хранится в памяти во время выполнения.

Решение о включении той или иной части программы принимается на этапе компиляции, а не во время выполнения. Это повышает эффективность программы (но уменьшает её гибкость).

Для условной компиляции используется препроцессорная директива #if. Она имеет 2 формы:

1.без else части.

заголовок_ if

оператор1

#endif

2.с else частью

заголовок_if

оператор1

#else

оператор2

#endif

где #endif используется для обозначения конца блока if

Здесь заголовок_if содержит условие в зависимости от значения, которое выполняется оператор1 или оператор2. Оператор1 выполняется если условие в заголовке_if истинно, оператор2 если ложно.

Заголовок_if имеет 3 формы:

#if константное выражение.

Если константное выражение отличается от 0, условие истинно, если равно 0, условие ложно.

#ifdef.

Условие истинно, если идентификатор предварительно был определён с помощью директивы #define (и не было для него директивы #undef). В противном случае ложно.

#ifndef

Условие истинно, если идентификатор не был определён ранее с помощью директивы #define (или был определён, а затем к нему была применена директива #undef).

Пример. Условная компиляция.

#ifndef SIZE

#define SIZE 128

#endif

В результате переменная SIZE получает значение, если ранее она не была определена программистом.

Рекомендации по программированию.

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

Пример.

#ifndef MAX

оператор

#else

#if MAX= =100

оператор

#else

оператор

#endif

#endif

Пример демонстрации условной компиляции, определяется символический идентификатор RAZM_BUF в зависимости от значения переменных A,B,C.

#if A

#define RAZM_BUF 4096

#endif

#if B

#define RAZM_BUF 1024

#endif

#if C

#define RAZM_BUF 512

#endif

2.7.6.Директива #elif.

#elif означает иначе, если. Используется для построения if-else-if с целью определения различных опций компиляции.

За #elif следует константное выражение. Если оно истинно, то блок кода компилируется, и остальные выражения не проверяются, в противном случае рассматривается следующий блок.

Формат #elif

#if выражение








Дата добавления: 2016-04-14; просмотров: 563;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.