К данным директивам относятся: #if, #else, #elif, #endif.
Данные директивы производят выборочную компиляцию программы. Если выражение, следующее за #if, истинно, то коды, заключенные между #if и #endif, будут компилироваться. В противном случае они при компиляции будут пропущены. Выражение, следующее за #if, проверяется во время компиляции, поэтому оно может содержать только константы и макросы, которые прежде определены. Переменные здесь не могут использоваться.
Директива #else используется так же, как и else в языке Си.
Пример: Использование условной компиляции.
# include <stdio.h>
# define MAX 100
main(void)
{
# if MAX>99
printf(“ MAX равно %d \n”, MAX);
# endif
return 0;
}
Директива #elif используется для организации вложенной условной компиляции. Форма использования ее следующая:
#if <выражение>
последовательность операторов
#elif <выражение 1>
последовательность операторов
#elif <выражение 2>
последовательность операторов
…………………………………..
# endif
Другой метод условной компиляции состоит в использовании директив #ifdef и #ifndef. Основная форма использования этих директив следующая:
|
|
#ifdef ИМЯ_МАКРОСА
последовательность операторов
# endif
и соответственно
#ifndef ИМЯ_МАКРОСА
последовательность операторов
# endif
Если макрос определен, то при использовании # ifdef компилируется соответствующая последовательность до операторов # endif. Если же макрос не определен или был отменен директивой #undef, то соответствующая последовательность операторов игнорируется компилятором. Директива #ifndef действует противоположным образом.