Definitions are declarations that fully define the entity introduced by the declaration. Every declaration is a definition, except for the following:
 Any declaration with an extern storage class specifier or with a language linkage specifier (such as extern "C") without an initializer 
extern const int a; // declares, but doesn't define a
extern const int b = 1; // defines b
 A function declaration without a function body 
int f(int); // declares, but doesn't define f
 A parameter declaratio