Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

Проверяется значение выражения, составленного из констант и если оно не равно нулю, компилируется (включается) последующий текст.

#ifdef идентификатор

Последующий тест компилируется, если "идентификатор" уже был определен для препроцессора в команде #define.

#ifndef идентификатор

Последующий текст компилируется, если "идентификатор" в данный момент не определен. Конструкция

#undef идентификатор

исключает "идентификатор" из списка определенных для препроцессора имен. За любой из трех условных команд может следовать произвольное число строк текста, содержащих, возможно, команду вида #else и заканчивающихся #endif. Если проверяемое условие справедливо, то строки между #else и #endif игнорируются. Если же проверяемое условие не выполняется, то игнорируются все строки между проверкой и командой #else, а если ее нет, то командой #endif.

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

Пример:

#define SIZE 16 // определение SIZE
#include <stdio.h>
main()
{
char c='A';
#ifndef SIZE // если SIZE не определено
int x=123;
printf("x=%d\n",x);
#else
static char x[SIZE]="информатика";
printf("x=%s\n",x);
#endif
printf("%c\n",c);
}


Результат работы приведенной выше программы:

информатика

А

#include <stdio.h>
main()
{
char c='A';
#ifndef SIZE
int x=123;
printf("x=%d\n",x);
#else
static char x[SIZE]="информатика";
printf("x=%s\n",x);
#endif
printf("%c\n",c);
}

При таком определении результатом работы программы будет:

А

4.2. Директива #undef.

Директива #undef используется для отмены действия директивы #define. Синтаксис этой директивы следующий:

#undef идентификатор

Директива отменяет действие текущего определения #define для указанного идентификатора. Не является ошибкой использование директивы #undef для идентификатора, который не был определен директивой #define.

Пример:

#undef WIDTH

#undef MAX

Эти директивы отменяют определение именованной константы WIDTH и макроопределения MAX.


Задание для самоконтроля:

Что будет выведено в результате выполнения программы:

#include<iostream.h>

#define min(n,m) ((n) < (m)? (n): (m))

main()

{

int rlst,num1=1,num2=7;

for(int I=0;I<4;I++)

{

rlst=min(++num1,num2);

cout <<"\n min "<<I+1<<"="<<rlst;

}

}





Дата публикования: 2014-12-08; Прочитано: 253 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...