When we define a nonconst variable at global scope, it is accessible throughout the program. We can define a nonconst variable in one file and--assuming an appropriate declaration has been made--can use that variable in another file:
// file_1.cc
int counter; // definition
//file_2.cc
extern int counter; // uses counter from file_1.cc
++ counter; // increases counter defined in file_1.cc
Unlike other variables, unless otherwise specified, const variables declared at global scope are local to the file in which the object is defined. The variable exists ini that file only and cannot be accessed by other files.
We can make a const object accessible throughout the program by specifying that it is extern:
// file_1.cc
// definition and initializes a const that is accessible to other files
extern const int counter = 0;
// file_2.cc
extern const int counter; // uses counter in file_1.cc
++ counter;