мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
asm:c_cpp [26/02/2014 21:14] arabusovasm:c_cpp [26/02/2014 21:31] (текущий) arabusov
Строка 1: Строка 1:
-==== Препроцессор ====+===== Препроцессор =====
 Директивы препроцессора: Директивы препроцессора:
   * define — задаёт макроопределение (макрос) или символическую константу   * define — задаёт макроопределение (макрос) или символическую константу
Строка 13: Строка 13:
   * error — выдача диагностического сообщения   * error — выдача диагностического сообщения
   * pragma — действие, зависящее от конкретной реализации компилятора   * pragma — действие, зависящее от конкретной реализации компилятора
-=== Макросы === +==== Макросы ==== 
-[code]#define max(a,b) ((a) > (b) ? (a) : (b))[/code]+<code c>#define max(a,b) ((a) > (b) ? (a) : (b))</code
 +=== Операторы # и ## === 
 +<code c>#define make_str(bar) # bar 
 +printf(make_str(42)); 
 +</code> 
 +преобразуется в  
 +<code c>printf("42");</code> 
 +<code c>#define MakePosition(x) x##X,x##Y,x##Width,x##Height 
 +int MakePosition(Object); 
 +</code> 
 +преобразуется в  
 +<code c>int ObjectX,ObjectY,ObjectWidth,ObjectHeight;</code> 
 +=== undef === 
 +После строки 
 +<code c> #undef идентификатор</code> 
 +препроцессор считает, что //идентификатор// не определён. Это может помочь нам в случае условной компиляции. 
 +==== Ссылки ==== 
 +  * [[http://gcc.gnu.org/onlinedocs/cpp/|CPP (the C preprocessor from gcc project]] 
 +  * [[http://info.fenster.name/clectures/lecture08.pdf|Фенстер]]