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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
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 c>#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|Фенстер]]