If a declaration for an identifier within a block does not include the extern storage-class specifier, the identifier has no linkage and is unique to the function.
The following identifiers have no linkage:
An identifier declared to be anything other than an object or a function
An identifier declared to be a function parameter
A block-scope identifier for an object declared without the extern storage-class specifier
If an identifier has no linkage, declaring the same name again (in a declarator or type specifier) in the same scope level generates a symbol redefinition error.