An object declaration, for example:
int i;
is a definition in C++. In ISO/ANSI C, it is a tentative definition.
In C++, a global data object must be defined only once. In ISO/ANSI C , a global data object can be declared several times without using the extern keyword.
In C++, multiple definitions for a single variable cause an error. A C compilation unit can contain many identical tentative definitions for a variable.