| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
ления требуют наличия где-либо далеев программе определений.
Объявление ссылки просто вводит в программу одно или более
имен идентификаторов.Определение фактически распределяет
объекту память и связывает идентификатор с этим объектом.
Предварительные определения
СтандартANSI C вводит новуюконцепцию: предварительное
определение. Любое объявление внешних данных, не имеющее
спецификаторакласса памяти и инициализатора, рассматривается
как предварительное определение. Еслиобъявленный идентифика-
тор появляется в последующемопределении, то предварительное
определение рассматривается,как если бы имелся спецификатор
класса памяти extern .Другими словами, предварительное опре-
деление становится простым объявлением ссылки.
Если достигнут конец единицы трансляции, а для иденти-
фикатора так и не было встречено определения с инициализато-
ром, то предварительное определение становится полным
определением, а для определенного таким образом объекта ре-
зервируется неинициализированная (заполненнаянулями) область
памяти. Например,
int x;
int x; /* допустимо, резервируется одна копия x */
int y;
int y = 4; /* допустимо, y инициализируется значением 4 */
int z = 5;
int z = 6; /* недопустимо, т.к. оба определения
инициализированы */
Возможные объявления
В число объектов, которые могут быть объявлены, входят:
- переменные
- функции
- классы и компоненты классов (С++)
- типы
- теги структур, объединений и перечислимых данных
- компоненты структур
- компоненты объединений
- массивы прочих типов
- перечислимые константы
- метки операторов
- макросы препроцессора
Полный синтаксис объявлений показан в следующих табли-
- 35 -
цах. Рекурсивная природа синтаксиса описателей позволяет
создавать сложные описатели. Для улучшения читаемости мы
пошли на использование определяемого типа (typedef).
Синтаксис объявлений Turbo C++ Таблица 1.10
-----------------------------------------------------------
объявление:
<спецификаторы-объявления> <список-деклараторов>
объявление-asm
объявление-функции
спецификация-типа-компоновки
спецификатор-объявления:
спецификатор-класса-памяти
спецификатор-типа
спецификатор-функции
friend (только для С++)
typedef
спецификаторы-объявления:
<спецификаторы-объявления> спецификатор-объявления
спецификатор-класса-памяти:
auto
register
static
extern
спецификатор-функции: (только для С++)
inline
virtual
спецификатор-типа:
имя-простого-типа
спецификатор-класса
спецификатор-перечислимых-данных
спецификатор-усовершенствованного-типа
const
volatile
имя-простого-типа:
имя-класса
имя-typedef
char
short
int
long
signed
unsigned
float
double
void
спецификатор-усовершенствованного-типа:
ключ-класса идентификатор
ключ-класса имя-класса
enum имя-перечислимых-данных
ключ-класса: (только для С++)
class
struct
union
список-перечислимых-данных:
нумератор
список-нумераторовнумератор
- 36 -
нумератор:
идентификатор
идентификатор = выражение-типа-константы
выражение-типа-константы:
условное-выражение
спецификация-типа-компоновки: (только для С++)
extern строка (* <список-объявления> *)
extern строка объявление
список-объявления:
объявление
список-объявления объявление
-----------------------------------------------------------
Для следующей таблицы отметим, что на количество и по-
рядок модификаторов и квалификаторов наложены ограничения.
Кроме того, перечисленные модификаторыявляются единственным-
дополнением синтаксиса декларатора, не входящим в стандарт
ANSI C и С++. Каждый модификатор подробно описан, начиная со
стр.46 оригинала.
Синтаксис декларатора Turbo C++ Таблица 1.11
-----------------------------------------------------------
список-декларатора:
инициализатор-декларатор
список-декларатораинициализатор-декларатор
инициализатор-декларатор:
имя-декларатора
список-модификаторов
операция-указателядекларатор
декларатор (список-объявления-параметров)
<список-со-квалификаторов>
(список-со-квалификаторов - только для С++)
декларатор [<выражение-типа-константы>]
список-модификаторов:
модификатор
список-модификаторов модификатор
модификатор:
cdecl
pascal
interrupt
near
far
huge
операция-указателя:
* <список-со-квалификаторов>
& <список-со-квалификаторов> (только для С++)
имя-класса = *<список-со-квалификаторов> (только для C++)
список-со-квалификаторов:
со-квалификатор <список-со-квалификаторов>
со-квалификатор:
const
volatile
имя-декларатора:
имя
имя-класса (только для С++)
имя-класса (только для С++)
имя-typedef
- 37 -
имя-типа:
спецификатор-типа <абстрактный-декларатор>
абстрактный-декларатор:
операция-указателя <абстрактный-декларатор>
<абстрактный-декларатор> (список-аргументов-объявления)
<список-со-квалификаторов>
<абстрактный-декларатор> [<выражение-типа-константы>]
список-объявления-аргументов:
|
adfun.ru
|
|
|
|