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

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



 драмма



 животные



 история



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



 медицина



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



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



 очерк



 повесть



 политика



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



 приключения



 психология



 религия



 студенту



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



 фантастика



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



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



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



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



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

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

  Поскольку каждое  a  и  f  описано  как  static,  получающаяся  в
результате программа  является правильной.  В каждом файле своя a и
своя f().
  Когда  переменные  и  функции  явно  описаны  как  static,  часть
программы легче  понять (вам  не надо  никуда больше  заглядывать).
Использование static  для  функций  может,  помимо  этого,  выгодно
влиять на расходы по вызову функции, поскольку дает оптимизирующему
компилятору более простую работу.
  Рассмотрим два файла:

  // file1.c:
      const int a = 6;
      inline int f() { /* ... */ }
      struct s { int a,b; }

  // file1.c:
      const int a = 7;
      inline int f() { /* ... */ }
      struct s { int a,b; }

  Раз правило  "ровно одно  определение" применяется  к константам,
inline-функциям и  определениям функций так же, как оно применяется
к функциям и переменным, то file1.c и file2.c не могут быть частями
одной C++  программы. Но  если это  так, то  как же два файла могут
использовать одни  и те  же типы и константы? Коротко, ответ таков:

                             - стр 112 -

типы, костанты  и т.п.  могут  определяться  столько  раз,  сколько
нужно, при  условии, что  они определяются  одинаково. Полный ответ
несколько более сложен (это объясняется в следующем разделе).

     4.3 Заголовочные Файлы

  Типы во  всех описаниях  одного и  того же  объекта  должны  быть
согласованными. Один  из способов  это достичь  мог бы  состоять  в
обеспечении средств  проверки типов  в компоновщике, но большинство
компоновщиков  -   образца  1950-х,   и  их   нельзя  изменить   по
практическим соображениям*.  Другой подход  состоит  в  обеспечении
того,  что  исходный  текст,  как  он  передается  на  рассмотрение
компилятору,  или  согласован,  или  содержит  информацию,  которая
позволяет   компилятору    обнаружить    несогласованности.    Один
несовершенный, но простой способ достичь согласованности состоит во
включении заголовочных  файлов, содержащих интерфейсную информацию,
в исходные  файлы,  в  которых  содержится  исполняемый  код  и/или
определения данных.
  Механизм включения  с помощью  #include - это чрезвычайно простое
средство обработки  текста для  сборки кусков  исходной программы в
одну единицу (файл) для ее компиляции. Директива

  #include "to_be_included"

замещает строку,  в которой  встретилось #include, содержимым файла
"to_be_included". Его содержимым должен быть исходный текст на C++,
поскольку дальше  его  будет  читать  компилятор.  Часто  включение
обрабатывается отдельной  программой, называемой  C препроцессором,
которую CC вызывает для преобразования исходного файла, который дал
программист, в  файл без  директив включения  перед тем, как начать
собственно компиляцию. В другом варианте эти директивы обрабатывает
интерфейсная система  компилятора по мере того, как они встречаются

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 Большая Одесская Библиотека.