I get this error CHavokCharacterController.obj : warning LNK4006: "char const * const engine::core::physics_typename" (?physics_typename@core@engine@@3PBDB) already defined in CHavokPhysicsAnimator.obj; second definition ignored
when I try to define variables in my header file like this
Since you include the file in both .cpp files, the variable definition is contained in both places. Include guards only avoid duplicated inclusion into the same file, e.g. due to the same include statement in the .cpp file and its .h file. You have two completely separate .cpp files here, which create two separate .o files. And both will include the variable, which leads to the compile time problem and major problems due to wrong access to separate variables.
You must put definitions into .cpp files, or into classes.
If you redefine, you have the same problem as before. You just want to redeclare (foward declare) the variables, which can be done with the extern keyword. These variables are global, though, and hence on the dark side of programming techniques...