logo search
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.7.1 Спецификации

В описании можно использовать следующие спецификации:

спецификация-описания:

спецификация-класса-памяти

спецификация-типа

спецификация-fct

спецификация-шаблона-типа

friend

typedef

спецификации-описания:

спецификации-описания opt спецификация-описания

Самая длинная последовательность конструкций спецификация-описания,

которая, возможно, является именем типа, образует в описании конструкцию

спецификации-описания. Последовательность должна быть согласованной,

что объясняется ниже. Например,

typedef char* Pc;

static Pc; // ошибка: нет имени

Здесь описание static Pc является незаконным, поскольку не указано

никакого имени статической переменной типа Pc. Чтобы иметь

переменную типа int с именем Pc, необходимо задать

спецификацию-типа int, чтобы показать, что (пере)определяется

имя Pc из typedef, а не просто Pc является одним из элементов

последовательности конструкций спецификация-описания, например,

void f(const Pc); // void f(char* const)

void g(const int Pc); // void g(const int)

Укажем, что поскольку signed, unsigned, long и short по

умолчанию трактуются как int, конструкция имя-typedef, которая

появляется после одной из перечисленных спецификаций типа,

должна задавать (пере)определяемое имя, например,

void h(unsigned Pc); // void h(unsigned int)

void k(unsigned int Pc); // void k(unsigned int)