No olvides que en las ciencias informáticas cualquier problema casi siempre tiene diferentes resoluciones, no obstante aquí enseñamos lo más óptimo y mejor.
Solución:
Significa el archivo que contiene main
no tiene acceso a la player
definición de estructura (es decir, no sabe cómo se ve).
Prueba a incluirlo en header.h
o haga una función similar a un constructor que lo asigne si va a ser un objeto opaco.
EDITAR
Si su objetivo es ocultar la implementación de la estructura, hágalo en un archivo C que tenga acceso a la estructura:
struct player *
init_player(...)
struct player *p = calloc(1, sizeof *p);
/* ... */
return p;
Sin embargo, si la implementación no debe ocultarse, es decir, main
debería decir legalmente p->canPlay = 1
sería mejor poner la definición de la estructura en header.h
.
La causa de errores como “Aplicación no válida de sizeof a un tipo incompleto con una estructura…” siempre es la falta de una declaración de inclusión. Trate de encontrar la biblioteca adecuada para incluir.
Su error también se muestra al intentar acceder a la sizeof()
de un externo no inicializado array:
extern int a[];
sizeof(a);
>> error: invalid application of 'sizeof' to incomplete type 'int[]'
Tenga en cuenta que obtendrá un array size missing
error sin el extern
palabra clave.