КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

Turbo C++ Version 1.0 Programmer’s Guide

Комментировать

LIB.com.ua [электронная библиотека]: : TURBO C++ Version 1.0 Programmer’s Guide

ления требуют наличия где-либо далеев программе определений.
Объявление ссылки просто вводит в программу одно или более
имен идентификаторов.Определение фактически распределяет
объекту память и связывает идентификатор с этим объектом.

Предварительные определения

Стандарт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 —

имя-типа:
спецификатор-типа

абстрактный-декларатор:
операция-указателя
(список-аргументов-объявления)

[]

список-объявления-аргументов:

Страницы: 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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *