Книга: Язык программирования Си. Издание 3-е, исправленное

А8.9. Объявление typedef

А8.9. Объявление typedef

Объявления, в которых спецификатор класса памяти есть typedef, не объявляют объектов - они определяют идентификаторы, представляющие собой имена типов. Эти идентификаторы называются typedef-именами.

typedef-имя:
    идентификатор

Объявление typedef приписывает тип каждому имени своего объявителя обычным способом (см. A8.6.). С этого момента typedef-имя синтаксически эквивалентно ключевому слову спецификатора типа, обозначающему связанный с ним тип. Например, после

typedef long Blockno, *Blockptr;
typedef struct { double r, theta; } Complex;

допустимы следующие объявления:

Blockno b;
extern Blockptr bp;
Complex z, *zp;

b принадлежит типу long, bp - типу "указатель на long"; z - это структура заданного вида, a zp - принадлежит типу "указатель на такую структуру".

Объявление typedef не вводит новых типов, оно только дает имена типам, которые могли бы быть специфицированы и другим способом. Например, b имеет тот же тип, что и любой другой объект типа long.

typedef-имена могут быть перекрыты другими определениями во внутренней области видимости, но при условии, что в них присутствует указание типа. Например

extern Blockno;

не переобъявляет Blockno, а вот

extern int Blockno;

переобъявляет.

Оглавление книги


Генерация: 0.225. Запросов К БД/Cache: 0 / 3
поделиться
Вверх Вниз