Спецификаторами типов (спецификатор_типа) являются:
спецификатор_типа:
простое_имя_типа спецификатор_класса enum-спецификатор сложный_спецификатор_типа const
Слово const можно добавлять к любому допустимому спецфикатору_типа. В остальных случаях в описании может быть дано не более одного спецификатора_типа. Объект типа const не яляется lvalue. Если в описании опущен спецификатор типа, он принимается int.
простое_имя_типа: char short int long unsigned float double const void
Слова long, short и unsigned можно рассматривать как прилагательные. Они могут применяться к типу int; unsigned может также применяться к типам char, short и long.
Спецификаторы класса и перечисления обсуждаются в #8.5 и #8.10 соответственно.
сложный_спецификатор_типа: ключ typedef-имя ключ идентификатор
ключ: class struct union enum
Сложный спецификатор типа можно использовать для ссылки на имя класса или перечисления там, где имя может быть скрыто локальным именем. Например:
class x (* ... *);
void f(int x) (* class x a; // ... *)
Если имя класса или перечисления ранее описано не было, сложный_спецификатор_типа работает как описание_имени, см. #8.8.