RE:Donde definir de constantes en C++???
Concuerdo con ambos.
Chuidilang comenta: "Por supuesto, siempre que no necesites esas cosas en otros ficheros .cpp". Me gustaría extender esto.
Normalmente, hay un archivo CPP que se compila primero (en VC6, es AFXSTD.CPP, aunque lo puedes cambiar en las opciones de compilación). Si aquí declaras una variable, puedes emplear esta en otros ficheros CPP, siempre y cuando, en éstos, la declares como extern. Pongamos el siguiente ejemplo:
// Afxstd.cpp
long nRefCount;
// OtroArchivo.cpp
void ReferenceCount()
{
return nRefCount;
}
Esto te generará un error de compilación, ya que en OtroArchivo.cpp no está declarado nRefCount. Ahora, veamos esta variación del ejemplo anterior.
// Afxstd.cpp
long nRefCount ;
// OtroArchivo.cpp
long nRefCount;
void ReferenceCount()
{
return nRefCount;
}
Esta vez, no tendrás problemas de compilación, pero sí de enlazado (link), ya que te dirá que en OtroArchivo.cpp se redefinió nRefCount. Esto se soluciona con extern, como muestra el siguiente ejemplo.
// Afxstd.cpp
long nRefCount;
// OtroArchivo.cpp
extern long nRefCount;
void ReferenceCount()
{
return nRefCount;
}
Esto compilará y enlazará bien tu programa. Esto se dá, porque extern le dice al compilador: "tranquilo mi buen, te paso la variable a la hora de enlazar, no te preocupes al compilar".
Un saludo.