мета-данные страницы
  •  

Это старая версия документа!


препроцессор

Препроцессор имеет следующие директивы:

  • #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

{{fixme}}

#include

Эта директива подключает в исходный текст указанного файла.

#include <имя_файла> // поиск файла в стандартных системных каталогах
#include "имя_файла" // поиск файла в директории с заголовочниками (определено компилятором)

NTB