c/language/typedef

The typedef declaration provides a way to declare an identifier as a type alias, to be used to replace a possibly complex

The keyword is used in a, in the grammatical position of a , except that it does not affect storage or linkage:

Explanation
If a uses  as storage-class specifier, every declarator in it defines an identifier as an alias to the type specified. Since only one storage-class specifier is permitted in a declaration, typedef declaration cannot be.

typedef declaration does not introduce a distinct type, it only establishes a synonym for an existing type, thus typedef names are with the types they alias. Typedef names share the with ordinary identifiers such as enumerators, variables and function.