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

Директивы препроцессора:

  • define — задаёт макроопределение (макрос) или символическую константу
  • undef — отменяет предыдущее определение
  • include — вставляет текст из указанного файла
  • if — осуществляет условную компиляцию при истинности константного выражения
  • ifdef — осуществляет условную компиляцию при определённости символической константы
  • ifndef — осуществляет условную компиляцию при неопределённости символической константы
  • else — ветка условной компиляции при ложности выражения
  • elif — ветка условной компиляции, образуемая слиянием else и if
  • endif — конец ветки условной компиляции
  • line — препроцессор изменяет номер текущей строки и имя компилируемого файла
  • error — выдача диагностического сообщения
  • pragma — действие, зависящее от конкретной реализации компилятора

Макросы

#define max(a,b) ((a) > (b) ? (a) : (b))

Операторы # и ##

#define make_str(bar) # bar
printf(make_str(42));
преобразуется в
printf("42");
#define MakePosition(x) x##X,x##Y,x##Width,x##Height
int MakePosition(Object);
преобразуется в
int ObjectX,ObjectY,ObjectWidth,ObjectHeight;

undef

После строки

 #undef идентификатор
препроцессор считает, что идентификатор не определён. Это может помочь нам в случае условной компиляции.

Ссылки

asm/c_cpp.txt · Последние изменения: 26/02/2014 20:31 — arabusov
CC Attribution-Noncommercial 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0