Случайный афоризм
Ни один жанр литературы не содержит столько вымысла, сколько биографический. Уильям Эллери Чэннинг
 
новости
поиск по автору
поиск по тематике
поиск по ключевому слову
проба пера
энциклопедия авторов
словарь терминов
программы
начинающим авторам
ваша помощь
о проекте
Книжный магазин
Главная витрина
Книги компьютерные
Книги по психологии
Книги серии "Для чайников"
Книги по лингвистике
ЧАВо
Разные Статьи
Статьи по литературе

Форма пользователя
Логин:
Пароль:
регистрация
 детектив



 драмма



 животные



 история



 компьютерная документация



 медицина



 научно-популярная



 очередная история



 очерк



 повесть



 политика



 поэзия и лирика



 приключения



 психология



 религия



 студенту



 технические руководства



 фантастика



 философия и мистика



 художественная литература



 энциклопедии, словари



 эротика, любовные романы



в избранноеконтакты

Параметры текста
Шрифт:
Размер шрифта: Высота строки:
Цвет шрифта:
Цвет фона:

  #define PI 3.141593
  #define BEGIN {
  #define END }

  А вот примеры опасных макросов:
____________________
  * часто называемые также макроопределениями.  (прим. перев.)

                             - стр 137 -

  #define SQUARE(a) a*a
  #define INCR_xx (xx)++
  #define DISP = 4

  Чтобы увидеть,  чем они  опасны, попробуйте провести расширения в
следующем примере:

  int xx = 0;                // глобальный счетчик

  void f() {
      int xx = 0;            // локальная переменная
      xx = SQUARE(xx+2);     // xx = xx+2*xx+2
      INCR_xx;               // увеличивает локальный xx
      if (a-DISP==b) {       // a-= 4==b
          // ...
      }
  }

  Если вы  внуждены использовать  макрос, при  ссылке на глобальные
имена используйте операцию разрешения области видимости :: (#2.1.1)
и заключайте  вхождения имени параметра макроса в скобки везде, где
это возможно (см. MIN выше).
  Обратите внимание  на различие  результатов расширения  этих двух
макросов:

  #define m1(a) something(a)    // глубокомысленный комментарий
  #define m2(a) something(a)    /* глубокомысленный комментарий */

например,

  int a = m1(1)+2;
  int b = m2(1)+2;

расширяется в

  int a = something(1)    // глубокомысленный комментарий+2;
  int b = something(1)    /* глубокомысленный комментарий */+2;

  С помошью  макросов вы  можете разработать свой собственный язык.
Скорее всего, для всех остальных он будет непостижим. Кроме того, C
препроцессор -  очень простой  макропроцессор. Когда вы попытаетесь
сделать  что-либо  нетривиальное,  вы,  вероятно,  обнаружите,  что
сделать это  либо  невозможно,  либо  чрезвычайно  трудно  (но  см.
#7.3.5).

     4.8 Упражнения

  1. (*1) Напишите следующие описания: функция, получающая параметр
     типа указатель  на символ  и ссылку на целое и не возвращающая
     значения; указатель на такую фунцию; функция, получающая такой

1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : 35 : 36 : 37 : 38 : 39 : 40 : 41 : 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : 62 : 63 : 64 : 65 : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : 75 : 76 : 77 : 78 : 79 : 80 : 81 : 82 : 83 : 84 : 85 : 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : 94 : 95 : 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : 119 : 120 : 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 : 146 : 147 : 148 : 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : 158 : 159 : 160 : 161 : 162 : 163 : 164 : 165 : 166 : 167 : 168 : 169 : 170 : 171 : 172 : 173 : 174 : 175 : 176 : 177 : 178 : 179 : 180 : 181 : 182 : 183 : 184 : 185 : 186 : 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : 195 : 196 : 197 : 198 : 199 : 200 : 201 : 202 : 203 : 204 : 205 : 206 : 207 : 208 : 209 : 210 : 211 : 212 : 213 : 214 : 215 : 216 : 217 : 218 : 219 : 220 : 221 : 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 : 230 : 231 : 232 : 233 : 234 : 235 : 236 : 237 : 238 : 239 : 240 : 241 : 242 : 243 : 244 : 245 : 246 : 247 : 248 : 249 :
главная наверх

(c) 2008 Большая Одесская Библиотека.