si defino mis constantes varibles en mi cabecera como esta ...las variables constantes que no trabajan en la cabecera
extern const double PI = 3.1415926535;
extern const double PI_under_180 = 180.0f/PI;
extern const double PI_over_180 = PI/180.0f;
me sale el siguiente error
1>MyDirectX.obj : error LNK2005: "double const PI" ([email protected]@3NB) already defined in main.obj
1>MyDirectX.obj : error LNK2005: "double const PI_under_180" ([email protected]@3NB) already defined in main.obj
1>MyDirectX.obj : error LNK2005: "double const PI_over_180" ([email protected]@3NB) already defined in main.obj
1>MyGame.obj : error LNK2005: "double const PI" ([email protected]@3NB) already defined in main.obj
1>MyGame.obj : error LNK2005: "double const PI_under_180" ([email protected]@3NB) already defined in main.obj
1>MyGame.obj : error LNK2005: "double const PI_over_180" ([email protected]@3NB) already defined in main.obj
pero Si quito esas constantes de la cabecera y ponerlos en el documento que está incluyendo la cabecera como esta ...
const double PI = 3.1415926535;
const double PI_under_180 = 180.0f/PI;
const double PI_over_180 = PI/180.0f;
funciona
¿Alguien tiene idea de lo que podría estar haciendo mal?
Gracias
Probablemente deberías escribir '180.0' en lugar de' 180.0f' ya que estás tratando con dobles en lugar de flotadores. También cambie el nombre 'PI' a algo más único. 'PI' se usa en muchas bibliotecas como una macro y si lo usa, puede obtener resultados extraños. – thebretness
Pierde el 'extern' y estarás bien. – sellibitze
@sellibitze: No en C, donde los objetos 'const' tienen un enlace externo por defecto, lo que significa que' extern' no cambia nada. – AnT