The C11 standard specifies in section 6.7/5 which declarations are also definitions:
C11 6.7/5
A definition of an identifier is a declaration for that identifier that:
— for an object, causes storage to be reserved for that object;
(...)
So is a declaration of a variable inside a block also a definition? For example:
void Bla(void) {
int a; // Is this declaration also a definition?
}
I have found the following two answers on stackoverflow, which state that declarations of variables inside blocks are also definitions:
However, the answer provided by "Michael Burr" refers to 6.2.2/2 "Linkages of identifiers" in order to explain that variable declarations in block scope are also definitions. For me, his reference does not answer my question. The answer in the second link does not provide any reference to the C standard. Is there any other paragraph in the C standard which can be used as a reference to confirm those answers?
Please provide a reference to the C standard.