мета-данные страницы
Это старая версия документа!
препроцессор
Препроцессор имеет следующие директивы:
#define- определяет макрос или препроцессорный идентификатор#undef- отменяет определение макроса или идентификатора#ifdef- проверяет, определен ли идентификатор#ifndef- проверяет неопределенность идентификатора#include- включает текст из файла#if- проверяет условие выражения (как условная конструкция if)#else- задает альтернативное условие для #if#endif- окончание условной директивы #if#elif- задает альтернативное условие для #if#line- меняет номер следующей ниже строки#error- формирует текст сообщения об ошибке трансляции#pragma- определяет действия, которые зависят от конкретной реализацией компилятора#- пустая директива, по сути ничего не делает
#define
определяет идентификатор и последовательность символов, которые будут подставляться вместо идентификатора каждый раз, когда он встретится в исходном файле
#include <stdio.h> #define BEGIN { #define END } #define N 23 #define ADD(a,b) (a+b) int main(void) BEGIN int x = N; printf("Number: %d", x); // Number: 23 printf("%d + %d = %d", 10, 5, ADD(10, 5)); // 10 + 5 = 15 return 0; END
Следует учитывать, что директива препроцессор не заменяет последовательности символов в двойных и одинарных кавычках и в комментариях
#undef
#include
Эта директива подключает в исходный текст указанного файла.
#include <имя_файла> // поиск файла в стандартных системных каталогах #include "имя_файла" // поиск файла в директории с заголовочниками (определено компилятором)