Это означает, что файл, содержащий main
, не имеет доступа к определению структуры player
(т.е. не знает, как он выглядит).
Попробуйте включить его в header.h
или makeпохожая на конструктор функция, которая выделяет ее, если это непрозрачный объект.
EDIT
Если ваша цель - скрыть реализацию структуры, сделайте это в файле C, который имеет доступк структуре:
struct player *
init_player(...)
{
struct player *p = calloc(1, sizeof *p);
/* ... */
return p;
}
Однако, если реализация не должна быть скрыта - то есть main
должно юридически сказать p->canPlay = 1
, было бы лучше поместить определение структуры в header.h
.