The storage class specifier used within the declaration determines whether:
For a function, the storage class specifier determines the linkage of the function.
Declarations with the auto or register storage-class specifier result in automatic storage. Those with the extern or static storage-class specifier result in static storage.
Most local declarations that do not include the extern storage-class specifier allocate storage; however, function declarations and type declarations do not allocate storage.
The only storage-class specifiers allowed in a global or file scope declaration are static and extern.
Storage class specifier keywords are:
auto
extern
register
static
typedef