RE:¿ Cómo declarar constantes globales ?
Sí se puede. El problema es que si en el .h declaras una variable:
int miVar;
Y luego el fichero lo incluyes en varios .cpp, vas a tener varias variables con el mismo nombre declaradas en varios ficheros distintos, pues al final un #include lo que hace es copiar todo el h al fichero CPP que lo incluye, por lo que declararías la variable varias veces, reservando espacio para ella varias veces.
Para evitar eso, lo que se hace es utilizar la palabra "extern". En el .h pones:
extern int miVar;
Cuando un CPP incluye el .h, no declara una variable, sino que se indica que existe por ahí, en algún sitio, una variable de tipo entera externa al fichero, y que ya se conocerá dónde está cuando el programa se linke.
Después, en el .cpp asociado al .h, se declara la variable sin el extern.
Resumiendo:
------ FICHERO.H ------
extern int miVariable;
------ FICHERO.CPP ------
#include "fichero.h" // Posiblemente
int miVariable;
------ OTROS FICHEROS CPP QUE USEN miVariable ------
#include "Fichero.h"
Espero que te sirva