An earlier section (“Storage Classes” on page 124) explains scope rules for variables in C++. Program variables may be:
Local (declared inside functions without static and exist in local stack frames)
External static with file scope (declared outside functions with static)
Global with program scope (declared outside functions without static)
Internal static (declared inside functions with static and exist in the data area)
With program scope (3), separately compiled modules require access to function names, structures, and objects, often placed in global namespace. Global namespace includes all names from global declarations; that is, declarations appearing outside of function definitions. What is the proper way to deal with global ...