Недопустимое применение sizeof к неполному типу со структурой
У меня есть структура, куда я помещаю всю информацию об игроках. Это моя структура:
struct player{
   int startingCapital;
   int currentCapital;
   int startingPosition;
   int currentPosition;
   int activePlayer; 
   int canPlay;      
};
И это мое главное:
#include <stdio.h>
#include <stdlib.h>
#include "header.h"
int main(int argc, char *argv[])
{  int s,i,numOfPlayers;
   struct player *players;
    printf("Give the number of players: n");
    scanf("%d",&numOfPlayers);
    players = (struct player *)calloc(numOfPlayers,sizeof(struct player));
   system("PAUSE"); 
  return 0;
}
Я прошу пользователя указать количество игроков, а затем пытаюсь выделить необходимую память. Но я получаю эту ошибку компилятора, которую я не могу понять: 
invalid application of `sizeof' to incomplete type `player'  
4 ответа:
Это означает, что файл, содержащий
main, не имеет доступа к определению структурыplayer(т. е. не знает, как оно выглядит).Попробуйте включить его в
header.hили создать функцию, похожую на конструктор, которая выделяет его, если он должен быть непрозрачным объектом.EDIT
Если ваша цель-скрыть реализацию структуры, сделайте это в файле C, который имеет доступ к структуре:
struct player * init_player(...) { struct player *p = calloc(1, sizeof *p); /* ... */ return p; }Однако, если реализация не должна быть скрыта-т. е.
mainдолжен юридически скажем,p->canPlay = 1было бы лучше поместить определение структуры вheader.h.
Причина таких ошибок ,как " недопустимое применение sizeof к неполному типу со структурой... "это всегда отсутствие включающего заявления. Попробуйте найти правильную библиотеку для включения.