If you are *defining* a symbol in one of
the headers, and that header is included
in more than one cpp file in the project,
then that symbol will be *defined* in each
cpp file that includes the header. Then when
the linker tries to combine the obj files
from the compilations into a single exe
file it finds the symbol *defined* in
more than one object module. i.e. - It
*exists* in more than one module.
The symbol can be *declared only* in the
header. You need to *define* it in one
and only one source module (cpp), and
then in the other source modules it
needs to be *declared as extern*.