Программирование на C и C++

Онлайн справочник программиста на C и C++

#ifdef u #ifndef

Другой метод условной компиляции состоит в использовании директив #ifdef и #ifndef, что соответ­ственно означает «если определено» и «если не определено». Стандартный вид #ifdef следующий:

#ifdef имя_макроса
последовательность операторов
#endif

Если имя макроса определено ранее в операторе #define, то последовательность операторов, сто­ящих между #ifdef и #endif, будет компилироваться. Стандартный вид #ifndef следующий:

#ifndef имя_макроса
последовательность операторов
#endif

Если имя макроса не определено ранее в операторе #define, то последовательность операторов, стоящих между #ifdef и #endif, будет компилироваться.

Kaк #ifdef, так и #ifndef могут использовать оператор #else, но нe #elif. Например:

#include <stdio.h>
#define TED 10
int main(void)
{
#ifdef TED
printf("Hi Ted\n");
#else
printf("Hi anyone\n");
#endif
#ifndef RALPH
printf("RALPH not defined\n");
#endif
return 0;
}

выводит «Hi Ted» и «RALPH not defined». Если TED не определен, то выведется «Hi anyone», a за ним «RALPH not defined».

#ifdef и #ifndef можно вкладывать друг в друга так же, как и #if.