que he encontrado la mejor manera de organizar sus datos es seguir dos reglas simples:
- declaran Sólo las cosas en los archivos de cabecera.
- Defina cosas en C (o cpp, pero voy a utilizar C aquí para simplificar) los archivos.
Por declarar, me refiero a notificar al compilador que existen cosas, pero no asignarles almacenamiento. Esto incluye typedef
, struct
, extern
y más.
Por definición, I generalmente significa "asignar espacio para", como int
y así sucesivamente.
Si usted tiene una línea como:
int aaa;
en un fichero de cabecera, cada unidad compilación (básicamente define como un flujo de entrada al compilador - el archivo C junto con todo lo que trae con #include
, recursivamente) obtendrá su propia copia. Eso causará problemas si vincula dos archivos de objeto que tienen el mismo símbolo definido (excepto bajo ciertas circunstancias limitadas como const
).
Una mejor manera de hacer esto es definir que aaa
variable en uno de sus archivos C y luego poner:
extern int aaa;
en el archivo de cabecera.
Tenga en cuenta que si su archivo de encabezado solo está incluido en un archivo C, esto no es un problema. Pero, en ese caso, probablemente ni siquiera tenga un archivo de cabecera. Los archivos de encabezado son, en mi opinión, solo para compartir cosas entre unidades de compilación.
También debe proporcionar el contenido de test1.h. Es posible que use la terminología incorrecta para describir lo que está en test1.h. – sellibitze