Справочное руководство по C++ | страница 44



>extern "C" double f();

>static double f(); // ошибка

Объект, описанный внутри конструкции

>extern "C" {/*… */}

все же считается определенным, а не просто описанным.

Связывание объектов на C++ с объектами, определенными на других языках, так же как и обратное связывание, зависит от языков и реализации. Такое связывание возможно только в том случае, когда алгоритмы размещения объектов в памяти являются достаточно схожими для двух языков.

Если для задания связи в строке-литерале из спецификации-связи используется имя языка программирования, то рекомендуется, чтобы написание этого имени копировалось из документа, определяющего данный язык, например, Ada (а не ADA) и Fortran (а не FORTRAN).

R.8 Описатели

Список-описателей, фигурирующий в описании, - это последовательность через запятую описателей, каждый из которых может иметь инициализатор.

>список-описаний:

> описатель-с-инициализатором

> список-описаний , описатель-с-инициализатором

>описатель-с-инициализатором:

> описатель инициализатор >opt

Описание состоит из двух частей: спецификации (спецификация-описания; см. §R.7.1) и описателей (список-описателей). Спецификации задают основной тип, класс памяти или другие свойства описываемых объектов и функций. Описатели задают имя этих объектов и функций, а также, возможно, изменяют тип с помощью таких операций, как * (указатель на) и () (функция возвращающая). В описателе также можно задать начальные значения, инициализация обсуждается в §R.8.4 и §R.12.6.

Описатели имеют такой синтаксис:

>описатель:

> имя-в-описателе

> операция-ptr описатель

> описатель ( список-описаний-параметров ) список-спецификаций-cv >opt

> описатель [ выражение-константа >opt ]

> ( описатель )

>операция-ptr:

> * список-спецификаций-cv >opt

> & список-спецификаций-cv >opt

> полное-имя-класса :: * список-спецификаций-cv >opt

>список-спецификаций-cv:

> const

> volatile

>имя-в-описателе:

> имя

> имя-класса

> ~имя-класса

> имя-typedef

> уточненное-имя-типа

Конструкция имя-класса имеет определенное назначение при описании класса с этим именем, она же используется как уточнение в операции :: для разрешения коллизий в области видимости (§R.12.1, §R.12.4).

R.8.1 Имена типов

Имя типа необходимо указывать при задании операции явного преобразования типа или в качестве параметра в операциях sizeof или new. Для этого служит конструкция имя-типа, которая синтаксически эквивалентна описанию объекта или функции этого типа, в котором отсутствует имя объекта или функции.

>имя-типа: