Is int a;
a declaration or definition in C? Is there any difference in C++?
I was always thinking it's just a declaration, until today...
Is it a declaration or a definition?
A declaration describes an object, whereas a definition requests the creation of an object. All definitions are also declarations, but the reverse is not true.
In the case of int a;
, what it is depends on where it is placed in the source code:
int a;
is a definition - it requests the creation of an int
variable with automatic storage duration (and of course also a declaration);int a;
is a tentative definition (of which there can be more than one, as long as the types and linkage are agreeable); in C++, it is an ordinary definition with external linkage.struct
or union
specifier, int a;
is a declaration of a member.Where does it appear in your program?
In most contexts, it is both a declaration and definition.
OTOH, extern int a;
is a declaration only.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With